1.前台页面
<form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="files"> <input type="submit" value="上传"> </form>
2.加入相应的依赖
文件上传依赖 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.0.1</version> </dependency> maven项目下使用servlet所需依赖 <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <!-- 编译测试期间有效 --> <scope>provided</scope> </dependency>
3.servlet编写后台代码
public class upload extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { // 配置上传参数 DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); // 解析请求的内容提取文件数据 @SuppressWarnings("unchecked") List<FileItem> formItems = upload.parseRequest(request); // 迭代表单数据 for (FileItem item : formItems) { // 处理不在表单中的字段 if (!item.isFormField()) { String fileName = item.getName(); //定义上传文件的存放路径 String path = request.getServletContext().getRealPath("/uploadFiles"); //String path = "D:/aaa"; //定义上传文件的完整路径 String filePath = String.format("%s/%s",path,fileName); File storeFile = new File(filePath); // 在控制台输出文件的上传路径 System.out.println(filePath); // 保存文件到硬盘 item.write(storeFile); System.out.println("123"); } } } catch (Exception ex) { } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
4.
(1)准备上传文件的目录,放在webapp下,上传后可在tomcat目录下查看(空的目录idea不会更新到服务器(这应该是个bug),所以可以在里面随便放个文件,哪怕在删掉也行,迫使idea更新)
(2)也可直接存在本地目录(String path = "D:/aaa";)
参考链接:
https://blog.csdn.net/x15839250919/article/details/81330168
https://blog.csdn.net/u014785687/article/details/73863964 (核心API )