• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    JSP实现文件上传功能

    本文实例为大家分享了JSP实现文件上传功能的具体代码,供大家参考,具体内容如下

    一、准备部分

    需要fileupload.jar与io.jar包共同完成。构建完成路径后可继续。

    资源地址

    二、页面部分

    form action="UploadServlet" method="post" enctype="multipart/form-data">
     学号:input type="text" name="sno"/>br/>
     姓名:input type="text" name="sname"/>br/>
     上传照片:input type="file" name="spicture"/>br/>
     input type="submit" value="注册"/>
    /form>

    注意:

    1.文件上传必须要使用post,以避免用get方法时传输总量超过搜索框所能承载最大字符数。

    2.必须加入enctype="multipart.form-data"字段

    3.文件处需用“file”

    三、Servlet部分

    package webtest;
     
    import java.io.File;
    import java.io.IOException;
    import java.util.Iterator;
    import java.util.List;
     
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    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.FileItemFactory;
    import org.apache.commons.fileupload.FileUploadBase;
    import org.apache.commons.fileupload.FileUploadException;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
     
    /**
     * Servlet implementation class UploadServlet
     */
    @WebServlet("/UploadServlet")
    public class UploadServlet extends HttpServlet {
     private static final long serialVersionUID = 1L;
     
     protected void doGet(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
      request.setCharacterEncoding("utf-8");// 请求编码处理,传输时
      response.setCharacterEncoding("utf-8");// 响应编码处理,传输时
      response.setContentType("utf-8");// 响应编码处理,显示时
      boolean isMultipart = ServletFileUpload.isMultipartContent(request);// 判断是否有entype="multipart/form-data"部分
      if (isMultipart) {
       try {
        FileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        
        //设置上传时的内存缓冲区大小,超出时写入临时文件  10kb
        ((DiskFileItemFactory) factory).setSizeThreshold(10240);//单位byte
        //设置临时文件目录,防止系统空间不足
        ((DiskFileItemFactory) factory).setRepository(new File(request.getSession().getServletContext().getRealPath("Uploadtemp")));//动态获取Uploadtemp文件夹位于该项目中的位置
        //控制上传单个文件的最大值 20kb
        upload.setSizeMax(20480);//单位byte
        
        ListFileItem> items = upload.parseRequest(request);// 解析form中的所有请求字段,并保存在item中
        IteratorFileItem> iter = items.iterator();
     
        while (iter.hasNext()) {
         // 解析时无顺序,因此需根据名字查找
         FileItem item = iter.next();
         if (item.isFormField()) {//非文件数据
          String itemName = item.getFieldName();//获取非文件的范围数据名
          if (itemName.equals("sno")) {
           int sno = -1;
           sno = Integer.parseInt(item.getString("utf-8"));
          }
          else if (itemName.equals("sname")) {
           String sname = null; 
           sname = item.getString("utf-8");
     
          } 
          else {
           System.out.println("其他字段...");
          }
     
         } else {//文件上传
          String fileName = item.getName();//获取文件范围数据。路径及其名称
          //判断文件类型
          String ext = fileName.substring(fileName.indexOf(".")+1);
          if(!(ext.equals("png")||ext.equals("gif")||ext.equals("jpg"))) {
           System.out.println("仅支持png.gif,jpg类型文件");
           return ;
          }
          String path = request.getSession().getServletContext().getRealPath("Upload");//动态获取Upload文件夹位于该项目中的位置
          File file = new File(path,fileName);
          item.write(file);//定义上传路径,多为服务器路径
          System.out.println(fileName+"上传成功");
         }
         item.delete();//删除临时目录的文件
        }
       } 
       catch(FileUploadBase.SizeLimitExceededException e) {
        System.out.println("最大20KB");
       }
       catch (FileUploadException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       } 
       catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       }
      }
     }
     
     /**
      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
      *      response)
      */
     protected void doPost(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
      // TODO Auto-generated method stub
      doGet(request, response);
     }
     
    }

    注:

    1.若该处标红且鼠标悬停后未找到包,则可以使用"alt"+"/"组合键选择下图第一个类来导入。

     

    2.由于若Upload与Uploadtemp文件存放于tomcat对应的项目下,每一次通过eclipse更新代码,会将eclipse下代码直接覆盖,因而两个文件夹会直接被覆盖掉。可以在eclipse中新建,或通过绝对/相对路径于其他文件夹中来设置。

    3.临时文件中的数据会保留很短的时间,添加sleep让程序休眠也许可以看到。即使无item.delete(),在整个会话完成后,临时文件也会被删除。

    4.若报错无法找到文件,请尝试用浏览器若谷歌进行操作,而不是用Eclipse自带的。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • Jsp页面实现文件上传下载类代码
    • jsp中点击图片弹出文件上传界面及预览功能的实现
    • jsp实现文件上传下载的程序示例
    • Jsp+Servlet实现文件上传下载 文件上传(一)
    • AJAX和JSP实现的基于WEB的文件上传的进度控制代码
    • jsp文件上传与下载实例代码
    • jsp中点击图片弹出文件上传界面及实现预览实例详解
    • 利用jsp+Extjs实现动态显示文件上传进度
    • jsp 文件上传浏览,支持ie6,ie7,ie8
    • servlet+JSP+mysql实现文件上传的方法
    上一篇:基于jsp+mysql实现在线水果销售商城系统
    下一篇:关于JSP用户登录连接数据库详情
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    JSP实现文件上传功能 JSP,实现,文件,上传,功能,