文件上传-commons-fileupload组件

来源:互联网 发布:ubuntu下安装jdk9 编辑:程序博客网 时间:2024/03/28 23:56

1.简单的jsp文件上传界面

<%@ page language="java" contentType="text/html; charset=UTF-8"      pageEncoding="UTF-8"%>  <html>   <body>   <form action="servlet2/UploadServlet" method="post" enctype="multipart/form-data">      最简单的文件上传:<input type="file" name="fileupload"/>      描述:<input type="text" name="desc"/>      <input type="submit" value="submit"/>      </form>  </body>  </html> 

2、UploadServlet.java

重点:1、2、3是主要核心代码
package servlet2;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;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.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 doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        request.setCharacterEncoding("utf-8");          response.setCharacterEncoding("utf-8");          //1、创建一个DiskFileItemFactory工厂          DiskFileItemFactory factory = new DiskFileItemFactory();          //2、创建一个文件上传解析器          ServletFileUpload upload = new ServletFileUpload(factory);          //解决上传文件名的中文乱码          upload.setHeaderEncoding("UTF-8");           factory.setSizeThreshold(1024 * 500);//设置内存的临界值为500K          File linshi = new File("E:\\");//当超过500K的时候,存到一个临时文件夹中          factory.setRepository(linshi);          upload.setSizeMax(1024 * 1024 * 5);//设置上传的文件总的大小不能超过5M          try {              // 3. 得到 FileItem 的集合 items              List<FileItem> /* FileItem */items = upload.parseRequest(request);              // 4. 遍历 items:              for (FileItem item : items) {                  // 若是一个一般的表单域, 打印信息                  if (item.isFormField()) {                      String name = item.getFieldName();                      String value = item.getString("utf-8");                      System.out.println(name + ": " + value);                  }                  // 若是文件域则把文件保存到 f:\\files 目录下.                  else {                      String fileName = item.getName();                      long sizeInBytes = item.getSize();                      System.out.println(fileName);                      System.out.println(sizeInBytes);                      //文字输入流读入                    InputStream in = item.getInputStream();                      byte[] buffer = new byte[1024];                      int len = 0;                      fileName = "E:\\files";//文件最终上传的位置                      System.out.println(fileName);                      //文字输出流读取                    OutputStream out = new FileOutputStream(fileName);                      while ((len = in.read(buffer)) != -1) {                          out.write(buffer, 0, len);                      }                      out.close();                      in.close();                  }              }          } catch (FileUploadException e) {              e.printStackTrace();          }      }}
原创粉丝点击