commons-io commons-io 1.3.2
commons-fileupload commons-fileupload 1.3.2
UploadServlet UploadServlet pub.qingyun.UploadServlet01 UploadServlet /UploadServlet
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
点击上传
package pub.qingyun;import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;/*** @Author CQY* @Date 2023/3/13 20:51* @Version 1.0**/
public class UploadServlet01 extends HttpServlet {private static final long serialVersionUID = 1L;// 上传文件存储目录private static final String UPLOAD_DIRECTORY = "upload";// 上传配置private static final int MEMORY_THRESHOLD = 1024 * 1024 * 3; // 3MBprivate static final int MAX_FILE_SIZE = 1024 * 1024 * 40; // 40MBprivate static final int MAX_REQUEST_SIZE = 1024 * 1024 * 50; // 50MB/*** 上传数据及保存文件*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {try (PrintWriter writer = response.getWriter()) {response.setContentType("text/html;charset=UTF-8");// 检测是否为多媒体上传if (!ServletFileUpload.isMultipartContent(request)) {// 如果不是则停止writer.println("Error: 表单必须包含 enctype=multipart/form-data");writer.flush();return;}// 配置上传参数DiskFileItemFactory factory = new DiskFileItemFactory();// 设置内存临界值 - 超过后将产生临时文件并存储于临时目录中factory.setSizeThreshold(MEMORY_THRESHOLD);// 设置临时存储目录factory.setRepository(new File(System.getProperty("java.io.tmpdir")));ServletFileUpload upload = new ServletFileUpload(factory);// 设置最大文件上传值upload.setFileSizeMax(MAX_FILE_SIZE);// 设置最大请求值 (包含文件和表单数据)upload.setSizeMax(MAX_REQUEST_SIZE);// 中文处理upload.setHeaderEncoding("UTF-8");// 构造临时路径来存储上传的文件// 这个路径相对当前应用的目录String uploadPath = request.getServletContext().getRealPath("./") + File.separator + UPLOAD_DIRECTORY;// 如果目录不存在则创建File uploadDir = new File(uploadPath);if (!uploadDir.exists()) {uploadDir.mkdir();}// 解析请求的内容提取文件数据List formItems = upload.parseRequest(request);if (formItems != null && formItems.size() > 0) {// 迭代表单数据for (FileItem item : formItems) {// 处理不在表单中的字段if (!item.isFormField()) {String fileName = new File(item.getName()).getName();String filePath = uploadPath + File.separator + fileName;File storeFile = new File(filePath);// 在控制台输出文件的上传路径System.out.println(filePath);// 保存文件到硬盘item.write(storeFile);writer.write("SUCCESS");// 输出信息writer.flush();}}}} catch (Exception ex) {ex.printStackTrace();}}
}
上一篇:分布式Id生成方式