zoukankan      html  css  js  c++  java
  • 文件上传FileUpload

    从上面可以看出,如果我们想上传文件,需要对表单提交过来的内容进行解析,每一个文件项.

    java 核心代码

    jar 包

    文件上传代码

    package cn.ecit.servlet;
    
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    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.FileItemFactory;
    import org.apache.commons.fileupload.FileUploadException;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
    
    public class FileUploadServlet extends HttpServlet{
    
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    		//初始化文件工厂
    		FileItemFactory fileItemFactory = new DiskFileItemFactory();
    		ServletFileUpload up = new ServletFileUpload(fileItemFactory);
    		up.setFileSizeMax(50*1024*1024);                
    		up.setSizeMax(10*1024*1024);	
    		up.setHeaderEncoding("UTF-8");
    		if(up.isMultipartContent(req)){
    			try {
    				List<FileItem> list = up.parseRequest(req);
    				for(FileItem item:list){
    					if(item.isFormField()){
    						String fieldName = item.getFieldName();
    						String fieldValue = item.getString("UTF-8");
    						System.out.println(fieldName+" "+fieldValue);
    					}else{
    						String fileName = item.getName();
    						String path = getServletContext().getRealPath("/upload");
    						File file = new File(path,fileName);
    						item.write(file);
    						item.delete();
    					}
    				}
    			} catch (FileUploadException e) {
    				e.printStackTrace();
    			} catch (Exception e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	}
    
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    		this.doGet(req, resp);
    	}
    	
    }
    

      文件上传总结:     

      1.创建文件临时工厂

      FileItemFactory factory = new DiskFileItemFactory();
      ServletFileUpload up = new ServletFileUpload(factory);

      2.配置工厂参数

      up.setFileSizeMax(30*1024*1024);
      up.setSizeMax(80*1024*1024);
      up.setHeaderEncoding("UTF-8");

      3.判断是否为文件上传(由前台提交表单属性决定)

      up.isMultipartContent(req)

      4.得到 FileItem (可以是多文件上传)

      List<FileItem> list = up.parseRequest(req);

      一个list 代表一个文件项目,如上图所示

      5.遍历文件项

      for(FileItem item:list)

      6.判断 item.isFormField() 是否为普通文本框

      7. 得到文件上传路径 getServletContext().getRealPath("/upload");

      8.写入文件 item.write(file);

      9.item.delete(); 删除临时文件

  • 相关阅读:
    LeetCode-195
    中文屋子与图灵测试谁对?
    leedcode-122
    Java 网络编程
    Java File类与IO流
    Java 异常
    Java 多线程
    Java Collection集合
    Java 常用API (第二部分)
    Java 日期时间与unix时间戳之间转换
  • 原文地址:https://www.cnblogs.com/py1994/p/6849099.html
Copyright © 2011-2022 走看看