一、需求
点击前端界面按钮,选择文件,上传文件到后端服务器磁盘。
二、使用步骤
-
创建springmvc工程,引入相关的依赖,配置web.xml和springmv.xml文件,创建对应的controller层,详情参考
-
前端界面的创建
<div> <h2>multipart文件上传</h2> <fieldset> <form method="post" enctype="multipart/form-data" action="/demo/upload"> <input type="file" name="uploadFile"/> <input type="submit" value="上传"> </form> </fieldset> </div>
-
引入依赖的jar包
<!--文件上传所需jar包--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency>
-
配置文件上传解析器
<!--多元素解析器 id固定--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--value默认-1,即大小为无限;当前最大上传5000000个字节--> <property name="maxUploadSize" value="5000000"/> </bean>
-
后台接收handler的逻辑处理
-
获取源文件名的扩展名,拼接成新的唯一文件名
-
文件夹存放文件数量有限,需要按日期存放
-
将文件名放入对应数据库
代码:
//上传文件 @RequestMapping("/upload") public void handleFileUpload(MultipartFile uploadFile, HttpServletRequest request) throws IOException { //获取上传文件后缀 String originalFilename = uploadFile.getOriginalFilename(); String ext = originalFilename.substring(originalFilename.lastIndexOf("."), originalFilename.length()); //随机生成文件名 String newFileName = UUID.randomUUID().toString() + "." + ext; //创建当前日期的文件夹,存储文件 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); String date = simpleDateFormat.format(new Date()); String realPath = request.getSession().getServletContext().getRealPath("/uploads"); File folder = new File(realPath + "/" + date); if (!folder.exists()){ folder.mkdirs(); } //存储文件 uploadFile.transferTo(new File(folder, newFileName)); //文件路径存储到数据库(如需要) }
-