package com.gk.java.servlet; import java.io.File; import java.io.IOException; import java.util.List; import java.util.UUID; 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.FileUploadBase.FileSizeLimitExceededException; import org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; public class FileUploadServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置字符集 response.setContentType("text/html;charset=UTF-8"); DiskFileItemFactory factory = new DiskFileItemFactory(); // 根据工厂对象创建解析类对象 ServletFileUpload fileUpload = new ServletFileUpload(factory); // 设置单个上传文件的大小 fileUpload.setFileSizeMax(1024 * 50); // 设置上传文件的总大小 不能超出3M 超过3M的话要在tomcat的server.xml //<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/> //加上 maxSwallowSize="-1" fileUpload.setSizeMax(1024 * 128); // 创建文件路径 // 代表项目request.getServletContext(); ServletContext context = request.getServletContext(); // 在项目的根目录下获取upload这个文件夹 String realPath = context.getRealPath("/upload"); // File f = new File(realPath); // 判断文件夹是否存在 if (!f.exists()) { // 没有则创建这个目录 f.mkdirs(); } try { List<FileItem> list = fileUpload.parseRequest(request); for (FileItem fileItem : list) { /* * System.out.println("文件内容类型:"+fileItem.getContentType()); * System.out.println("表单name属性:"+fileItem.getFieldName()); * System.out.println("文件名:"+fileItem.getName()); * System.out.println("内容大小:"+fileItem.getSize()); * System.out.println("表单value属性值:"+fileItem.getString("UTF-8")) * ; System.out.println("-----------------------------"); */ // 判断属性类型是否是字符串格式的 if (fileItem.isFormField()) { // 是字符串类型的输出 System.out.println(fileItem.getFieldName()); } else { // 不是字符串的, // 加上限制条件只有上传文件大小大于0的才能上传 if (fileItem.getSize() > 0) { // 先获取文件名 String fileName = fileItem.getName(); // 设置保存文件的文件名上传时间+UUID+文件名称 fileName = System.currentTimeMillis() + "_" + UUID.randomUUID().toString().replaceAll("-", "") + "_" + fileName; // 设置路径 File file = new File(f, fileName); fileItem.write(file); } } } response.getWriter().write("上传成功"); } catch (FileSizeLimitExceededException e) { response.getWriter().write("上传文件超出50K"); e.printStackTrace(); } catch (SizeLimitExceededException e) { e.printStackTrace(); response.getWriter().write("总文件大小不能超过128Kb..."); } catch (Exception e) { e.printStackTrace(); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
使用fileUpload实现上传下载demo
最新推荐文章于 2022-06-09 11:11:28 发布