uploadservlet.java

来自「演示了如何用java实现文件上传的功能。」· Java 代码 · 共 51 行

JAVA
51
字号
package com.v512.upload;

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UploadServlet extends HttpServlet {
	private static final long serialVersionUID = -2201219701121037194L;
	private String savePath;
	ServletContext sc;

	public void init(ServletConfig config) {
		savePath = config.getInitParameter("savePath");
		sc = config.getServletContext();
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		DiskFileItemFactory factory = new DiskFileItemFactory();
		ServletFileUpload upload = new ServletFileUpload(factory);
		try {
			List items = upload.parseRequest(request);
			Iterator itr = items.iterator();
			while (itr.hasNext()) {
				FileItem item = (FileItem) itr.next();
				if (item.isFormField()) {
					System.out.println("表单参数名:" + item.getFieldName() + ",表单参数值:" + item.getString("UTF-8"));
				} else {
					System.out.println("上传文件的大小:" + item.getSize());
					System.out.println("上传文件的类型:" + item.getContentType());
					// 注意item.getName(),会返回上载文件在客户端的完整路径名称
					System.out.println("上传文件的名称:" + item.getName());

					File tempFile = new File(item.getName());
					File file = new File(sc.getRealPath("/") + savePath, tempFile.getName());
					item.write(file);
					request.setAttribute("upload.message", "上传文件成功!");
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			request.setAttribute("upload.message", "上传文件失败!");
		}
		request.getRequestDispatcher("/uploadResult.jsp").forward(request, response);
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?