SpringMVC上传文件
文件上传的要求
A、form表单的enctype取值必须是:multipart/form-data B、method属性取值必须是Post C、提供一个文件选择域 <input type="file" />
springmvc上传文件示例
这里只是演示,上传的文件和访问的应用在同一台服务器上。
pom添加依赖
<!--文件上传的依赖--> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency>
创建保存文件的目录
在webapp下创建目录upload,上传的文件放到这个目录下
jsp页面
在webapp下创建upload.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h1>文件上传</h1> <form action="/testFileUpload" method="post" enctype="multipart/form-data"> 文件:<input type="file" name="uploadFile"/><br/> <input type="submit" value="上传"/> </form> </body> </html>
web.xml中修改欢迎页
<welcome-file-list> <welcome-file>upload.jsp</welcome-file> </welcome-file-list>
控制器
package com.qzcsbj.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import java.util.UUID; @Controller public class TestUploadController { @RequestMapping("/testFileUpload") public String testFileUpload(MultipartFile uploadFile, HttpServletRequest request) throws Exception { String fileName = ""; // 获取原始文件名字 String uploadFileName = uploadFile.getOriginalFilename(); // 把文件加上随机数,防止文件重复 String uuid = UUID.randomUUID().toString().replace("-", "").toUpperCase(); fileName = uuid + "_" + uploadFileName; System.out.println("要上传的文件的名称是:" + fileName); // 获取上传的路径 String basePath = request.getServletContext().getRealPath("/upload"); System.out.println("basePath:" + basePath); // 每天一个文件夹 String datePath = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); // 判断路径是否存在 File file = new File(basePath + "/" + datePath); if (!file.exists()) { file.mkdirs(); } // 把上传的文件写到指定位置 File f = new File(file, fileName); uploadFile.transferTo(f); System.out.println("文件上传成功,路径为:" +f.getAbsolutePath()); return "success"; } }
配置文件解析器
springmvc.xml中添加:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 设置上传文件的最大尺寸为 5MB --> <property name="maxUploadSize"> <value>5242880</value> </property> </bean>
测试
启动tomcat,选择要上传的文件,点击“上传”
日志
上传成功
访问图片:http://localhost:8080/upload/2023-01-18/47CE4F91ADD84030B77E223FB07951AE_fu.jpg
原文会持续更新,原文地址:https://www.cnblogs.com/uncleyong/p/17058667.html
__EOF__
本文作者:持之以恒(韧)
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!