JSP文件上传
一、
在tomcat部署的项目下建一个文件夹,用于存放上传文件
再在你的项目中加入
这两个jar包,引入到项目中去

二、在项目中创建你的文件上传页面
<%-- Created by IntelliJ IDEA. User: 风间琉璃 Date: 2021/4/19 Time: 16:05 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>文件上传</title> </head> <body> <!--form表单中如果要上传文件,需改为post提交,且加上----enctype="multipart/form-data"--> <form action="${pageContext.request.contextPath}/FileUploadServlet" method="post" enctype="multipart/form-data"> 姓名:<input type="text" name="name" /> <br/> 头像:<input type="file" name="img" /> <br/> <input type="submit" value="提交" /> </form> </body> </html>

三、创建一个servlet,细节省略(偷懒/doge)
package JSP_Servlet.FileUpload.servlet; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; 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 java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import java.util.Random; @WebServlet("/FileUploadServlet") public class FileUploadServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf-8"); PrintWriter out = resp.getWriter(); String name = ""; //通过FileItemFactory工厂对象实例化ServletFileUpload对象 FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); try{ //调用ServletFileUpload的parseRequest()将表单中字段解析成FileItem对象的集合 List<FileItem> items = upload.parseRequest(req); //foreach循环FileItem集合 for (FileItem item : items){ //如果元素为普通的表单字段,如input等 if (item.isFormField()){ //如果该字段的name属性为name if (item.getFieldName().equals("name")){ //需要设置字符集编码 name = item.getString("utf-8"); } }else { //如果是文件数据 就需要上传 System.out.println("需要文件上传"); //源文件名 String sourceFileName = item.getName(); //获取后缀 String ext = sourceFileName.substring(sourceFileName.lastIndexOf(".")); //给目标文件命名 Random r = new Random(); // 为文件命名,为了不重名,使用系统当前时间的毫秒数加三位随机数命名,再加上后缀,例如:3445456546_231.jpg String fileName = System.currentTimeMillis()+"_"+r.nextInt(1000)+ext; //文件上传的目录 String uploadFilePath = req.getSession().getServletContext().getRealPath("upload/"); //服务器保存 文件上传 的位置(路径) //目标文件 File targetFile = new File(uploadFilePath,fileName); //将文件写入到 目标文件中 item.write(targetFile); //上传成功 out.print(name+"上传了文件"); } } }catch (Exception e){ out.print("上传失败!"); e.printStackTrace(); } } }


浙公网安备 33010602011771号