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(); 删除临时文件

  • 相关阅读:
    小白学编程,C++ 初始化的坑,你避开了吗?
    学完C语言还是懵的?大学生:我可能学了个假的C语言
    不知道如何入门编程?最全在线教程网站汇总来了,还不赶快收藏
    Linux 之父对 C++ 进行了炮轰,C++不值得推荐?
    没有内存泄漏的C++代码,如何用RAII编写,你知道吗
    菜鸟学编程,不懂C++ this指针?还不赶快来学一学
    在7天-第2天逐步学习MVC(模型视图控制器)
    ASP。NET MVC vs ASP。NET WebForm性能比较
    学习MVC项目在7天-奖金的第二天
    学习MVC项目在7天-奖金的第一天
  • 原文地址:https://www.cnblogs.com/py1994/p/6849099.html
Copyright © 2011-2022 走看看