uploadservlet.java

来自「文件上传文件上传文件上传文件上传文件上传」· Java 代码 · 共 53 行

JAVA
53
字号
package servlet;

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;
	private ServletContext sc;

	public void init(ServletConfig config) {
		savePath = config.getInitParameter("savePath");
		sc = config.getServletContext();
	}
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("GBK");
		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()) {// 判断是文件还是文本信息
					// 此时文件暂存在服务器的内存当中
					File tempFile = new File(item.getName());// 构造临时对象
					File file = new File(sc.getRealPath("/") + savePath,
							tempFile.getName());
					// 获取根目录对应的真实物理路径
					item.write(file);// 保存文件在服务器的物理磁盘中
					request.setAttribute("info", "上传文件成功!");// 返回上传结果
				} else {
					request.setAttribute("info", "没有选择上传文件!");
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			request.setAttribute("info", "上传文件失败!");
		}
		request.getRequestDispatcher("/info.jsp").forward(request, response);
	}
}

⌨️ 快捷键说明

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