首先,我们创建一个新的web工程,在工程的WebRoot目录下新建一个upload文件夹,这样当我们将该工程部署到服务器上时,服务器便也生成个upload文件夹,用来存放上传的资源。

然后,在WebRoot目录下新建一个jsp文件,主要实现的作用就是选择上传的文件,提交至servlet来进行处理

详细代码如下:一个form将文件信息通过post方式传送到指定的servlet

<%@ page language="java" contentType="text/html; charset=GBK"
 pageEncoding="GBK"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
  <form action="UpLoad" method="post" enctype="multipart/form-data"> 
     请选择上传的图片或文件:<input type="file" name="fileName"/><input type="submit" value="上传"/> 
    </form> 
</body>
</html>

可以看到,我们将数据提交到工程下的upload/UpLoad。

之后,我们就来编写这个servlet——UpLoad.java

package ayds;

import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UpLoad extends HttpServlet {

/**
  *
  */
 private static final long serialVersionUID = 1L;
 public void doGet(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
doPost(request, response);
}
 @SuppressWarnings("unchecked") 
    @Override 
   
//    protected void service(HttpServletRequest req, HttpServletResponse resp) 
//            throws ServletException, IOException { 
  public void doPost(HttpServletRequest req, HttpServletResponse resp)
 throws ServletException, IOException {
        req.setCharacterEncoding("GBK"); 
        resp.setContentType("text/html;charset=GBK"); 
        //为解析类提供配置信息 
        DiskFileItemFactory factory = new DiskFileItemFactory(); 
        //创建解析类的实例 
        ServletFileUpload sfu = new ServletFileUpload(factory); 
        //开始解析 
        sfu.setSizeMax(1024*400); 
        //每个表单域中数据会封装到一个对应的FileItem对象上 
        try { 
            List<FileItem> items = sfu.parseRequest(req); 
            //区分表单域 
            for (int i = 0; i < items.size(); i++) { 
                FileItem item = items.get(i); 
                //isFormField为true,表示这不是文件上传表单域 
                if(!item.isFormField()){ 
                    ServletContext sctx = getServletContext(); 
                    //获得存放文件的物理路径 
                    //upload下的某个文件夹   得到当前在线的用户  找到对应的文件夹 
                     
                    String path = sctx.getRealPath("/upload"); 
                    System.out.println("path=="+path); 
                    //获得文件名 
                    String fileName = item.getName(); 
                    System.out.println("fileName=="+fileName); 
                    //该方法在某些平台(操作系统),会返回路径+文件名 
//                    fileName = fileName.substring(fileName.lastIndexOf("/")+1);
                    fileName = fileName.substring(fileName.lastIndexOf("\\")+1);
                    System.out.println("fileName=="+fileName);
                    File file = new File(path+"\\"+fileName); 
                    if(!file.exists()){ 
                        item.write(file); 
                        //将上传图片的名字记录到数据库中 
                     int j=Dao.insertImg(fileName, "无");
                          if(j==1){
                        resp.sendRedirect("index2.jsp");
                          }
                    } 
                } 
            } 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
         
    }

}

转载于:https://www.cnblogs.com/manmanlu/p/3458775.html

Servlet+Jsp实现图片或文件的上传功能相关推荐

  1. 优秀教程:创建基于 Ajax 的文件拖放上传功能

    分享来自 Tutorialzine 的优秀教程--创建基于 Ajax 的文件拖放上传功能,结合 jQuery File Upload 插件和 jQuery Knob 插件实现漂亮的 CSS3/JS 驱 ...

  2. 使用jQuery OCUpload实现excel文件一键上传功能

    使用jQuery OCUpload实现excel文件一键上传功能 js代码 //为导入按钮,添加一键上传效果 $("#button-import").upload({action: ...

  3. php 拖拽 上传文件 进度,在Vue中如何实现带进度条的文件拖动上传功能

    这篇文章主要介绍了Vue实现带进度条的文件拖动上传功能,本文通过实例代码给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下 1. 基本界面 content="width=devic ...

  4. 表单和servlet在idea中实现文件的上传

    1.前端jsp的搭建. 通过type=file的input标签就可以选择要上传的文件,当submit提交表单的时候就可以将选定的文件以流的形式提交.要注意的技术细节就是表单中有上传文件功能时,必须显式 ...

  5. 腾讯云COS服务器文件上传与生命周期的设置,以及Opencv nparry数组格式图片非文件流方式上传

    目录 Opencv numpy arry图片非文件流直接上传 腾讯云COS服务器的文件上传和生命周期的设置 1.申请服务器 2.创建桶 3.官方文档以及安装SDK 4.开始使用(官方示例代码) 5.必 ...

  6. php多图片(文件)上传

    本人两天前写了一个单个图片上传的博客,现在写一个多文件上传的 先写一个添加图片的界面,比较简陋,但是这里有三种不同的方式 第一种: <form action="doAction3.ph ...

  7. java ajaxupload_Java中利用ajaxfileupload.js组件实现文件的上传功能

    概要: 在Java中,利用ajaxfileupload.js+commons-fileupload-1.3.1.jar 实现文件上传功能. 关键字: Java,上传,ajaxfileupload,fi ...

  8. 手机端本地图片或者拍照的上传功能

    原文连接 https://blog.csdn.net/m0_37852904/article/details/78550136 ------------------------------------ ...

  9. asp.net 如何实现大文件断点上传功能?

    之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...

  10. laravel图片和文件的上传

    https://www.jianshu.com/p/51c290b56b0f $file = $request::file('picfile');或者$request = $request::all( ...

最新文章

  1. 《OpenCV3编程入门》学习笔记7 图像变换(一)基于OpenCV的边缘检测
  2. 20行代码发一篇NeurIPS:梯度共享已经不安全了
  3. Ubuntu 14.04 opencv 2.4.9 安装
  4. 2019-2020 Google研究资助奖(Faculty Research Award)获奖出炉!185人上榜
  5. SQL基础---增删查询操作
  6. python如何爬虫网页数据-如何轻松爬取网页数据?
  7. 【Linux 内核】进程管理 task_struct 结构体 ② ( state 字段 | stack 字段 | pid 字段 | tgid 字段 | pid_links 字段 )
  8. Python正则表达式介绍 re.findall(pattern, str, flag=0)/re.I re.L re.M
  9. 如何在mac上面看充电器的瓦数!
  10. 一天中的最佳学习时间
  11. 前端学习(1306):node.js模块的加载机制
  12. python matplotlib使用ax绘图
  13. Android的 线性布局,Android布局之LinearLayout线性布局
  14. 图-3月12日-[评委计分系统3.0-双屏专业版]又有较大的专业升级,
  15. Codevs 3100 蜗牛的旅行
  16. Overlaps的压盖计数规则
  17. 谁说大象不能跳舞——《读书笔记》
  18. 996M11鹅厂这些互联网行业“黑话”,你知多少?
  19. [4G5G专题-129]:RF-架构演进的驱动力与RF常见术语
  20. 《涨知识啦30》-太阳能电池基本工作原理

热门文章

  1. opencv 识别长方形_利用opencv识别并提取图片中的矩形
  2. flume拦截器及自定义拦截器
  3. Linux下setsockopt函数返回-1,errno=22
  4. 为什么每次开机第一次启动程序会很慢?
  5. 企业数字化转型必备利器之微服务扩展
  6. tcc分布式事务框架源码解析系列(四)之项目实战
  7. SQL Server 阻止组件 xp_cmdshell
  8. scrapy 处理动态加载,使用phantomjs
  9. 【工具】线程安全的JdbcTemplate.java
  10. 【Oracle经典】132个oracle热门精品资料——下载目录