springmvc上传下载

本文介绍了一个基于Spring MVC的文件上传和下载实现方案。通过配置依赖和解析上传文件的大小及编码等参数,实现了文件的上传功能,并通过响应实体的方式完成了文件的下载。该方案适用于Web应用中的文件管理场景。

上传

参考

  1. 导包
    xml <!--springmvc 上传--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.2.2</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency>
  2. 配置文件
    xml <!--文件上传--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--限制文件大小--> <property name="maxUploadSize" value="10485760"></property> <property name="defaultEncoding" value="UTF-8"></property> </bean>
  3. jsp页面
    html <html> <head> <title>上传</title> </head> <body> <%--使用post请求,enctype="multipart/form-data"--%> <form action="/upload.do" method="post" enctype="multipart/form-data"> <label>头像</label><input type="file" name="file"><br> <label>用户名</label><input type="text" value="" placeholder="用户名" name="username"><br> <label>密码</label><input type="password" value="" placeholder="密码" name="password"><br> <input type="submit" value="提交"> </form> </body> </html>
  4. controller层
    java @RequestMapping(value = "/upload.do") @ResponseBody public void testUpload( HttpServletRequest request, HttpServletResponse response, User user, @RequestParam(value = "file") MultipartFile file) throws IOException { // 获取用户信息 System.out.println("用户名"); System.out.println(user.getUsername()); System.out.println("密码"); System.out.println(user.getPassword()); // 获取文件名 String filename = file.getOriginalFilename(); System.out.println(filename); // 获取绝对路径 String upload_Path = request.getRealPath("/upload"); // 路径处理 String file_path = upload_Path + "//" + UUID.randomUUID() + filename; // 判断路径是否存在如果没有就创建 File file1 = new File(file_path); if (!file1.getParentFile().exists()) { file1.getParentFile().mkdirs(); } // 将文件file里的内容复制到file1里 file.transferTo(file1); }

    下载

  5. jsp页面

     <html>
     <head>
         <title>Title</title>
     </head>
     <body>
     <a href="download.do?filename=f12c1a77-158f-466f-b272-33144f668de3_4Ib-a8g9aA.jpg">下载</a>
     </body>
     </html> 
  6. controller层
    java @RequestMapping("/download") public ResponseEntity<byte[]> downloadTest( HttpServletRequest request, @RequestParam("filename") String filename, Model model) throws IOException { filename = new String(filename.getBytes("ISO-8859-1"), "UTF-8"); // 文件下载路径 String path = request.getRealPath("/upload/"); System.out.println("path:" + path); File file = new File(path + File.separator + filename); HttpHeaders httpHeaders = new HttpHeaders(); // 解决文件名的乱码问题 String downloadFileName = new String(filename.getBytes("UTF-8"), "ISO-8859-1"); System.out.println("downloadFileName" + downloadFileName); // 以attachment方式(下载)打开文件 httpHeaders.setContentDispositionFormData("attachment", downloadFileName); // 二进制流数据,常见的文件下载 httpHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM); return new ResponseEntity<byte[]>( FileUtils.readFileToByteArray(file), httpHeaders, HttpStatus.CREATED); }

转载于:https://www.cnblogs.com/JaminYe/p/10631602.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值