欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > springMVC中的文件上传和下载

springMVC中的文件上传和下载

2025/2/24 15:19:01 来源:https://blog.csdn.net/NiNg_1_234/article/details/140024545  浏览:    关键词:springMVC中的文件上传和下载

文章目录

    • 10、文件上传和下载
      • 10.1文件下载
      • 10.2文件上传
        • 引入依赖
        • 文件上传的要求:

10、文件上传和下载

10.1文件下载

ResponseEntity用于控制器方法的返回值的类型,该控制器方法的返回值就是响应到浏览器响应报文使用ResponseEntity实现下载文件的功能

	@RequestMapping("/test/download")public ResponseEntity<byte[]> testDownload(HttpSession session) throws IOException {// 首先获取ServletContext对象ServletContext servletContext = session.getServletContext();// 获取服务器中文件的真实路径String realPath = servletContext.getRealPath("img");realPath = realPath + File.separator + "1.png";// 创建输入流InputStream inputStream = new FileInputStream(realPath);// 创建字节数组byte[] bytes = new byte[inputStream.available()];// 将输入流写入字节数组inputStream.read(bytes);// 设置响应头MultiValueMap<String, String> httpHeaders = new HttpHeaders();// 设置文件下载信息和文件名称httpHeaders.add("Content-Disposition", "attachment;filename=1.png");// 设置状态码HttpStatus httpStatus = HttpStatus.OK;// 创建 ResponseEntity 对象并返回ResponseEntity<byte[]> responseEntity = new ResponseEntity<>(bytes, httpHeaders, httpStatus);// 关闭输入流inputStream.close();return responseEntity;}

10.2文件上传

  1. 引入依赖
        <!--        // 文件上传--><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency></dependencies>
  1. 文件上传的要求:
    1. form表单的请求方式必须为post
    2. form表单必须设置属性enctype=“multipart/form-data”
        <form method="post" th:action="@{/test/upload}" enctype="multipart/form-data">头像:<input type="file" name="photo"><br><input type="submit" value="上传"></form>
    

    我这里用的是thymeleaf模板,如果你没有使用这个,直接用form表单也是可以的

    服务器端的java代码

    @RequestMapping("/test/upload")public String testUpload(MultipartFile photo, HttpSession session) throws IOException {// 获取上传文件的名称String originalFilename = photo.getOriginalFilename();// 获取上传文件名的后缀String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));// 获取uuidString uuid = UUID.randomUUID().toString();// 拼接一个新的文件名originalFilename = uuid + suffix;// 获取服务器中photo目录ServletContext servletContext = session.getServletContext();String photoPath = servletContext.getRealPath("photo");File file = new File(photoPath);if (!file.exists()) {file.mkdir();}String finalPath = photoPath + File.separator + originalFilename;photo.transferTo(new File(finalPath));return "success";}
    

.transferTo(new File(finalPath));
return “success”;

   }

**上面使用了UUID,UUID你可以直接理解成(UUID 只是一个值,您可以放心地将其视为唯一值。碰撞的风险是如此之低,以至于您可以合理地选择完全忽略它。)使用UUID的作用也就是生成一个不会重复的文件名,因为对于服务器而言,可能有很多很多的文件上传功能,如何都是一样的名字,那么就会对文件进行覆盖,这样,先上传的文件就会丢失**

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词