SpringMVC——文件下载
springMVC提供了一个ResponseEntity类型,可以方便的定义返回的HttpHeads和HttpStatus。
前端:
<a href="javascript:window.location.href='download?fileName=' + encodeURIComponent('简历.pdf')">简历.pdf</a>
在FileUploadController中加入下面这个controller
@RequestMapping("download") public ResponseEntity<byte[]> download(HttpServletRequest request, @RequestParam("fileName") String fileName) throws IOException { //下载文件路径 String path = request.getServletContext().getRealPath("/static/images"); File file = new File(path+File.separator+fileName); HttpHeaders headers = new HttpHeaders(); //下载显示的文件名,解决中文名字乱码问题 String downloadFileName = new String(fileName.getBytes("utf-8"),"iso-8859-1"); //通知浏览器已下载方式打开图片 headers.setContentDispositionFormData("attachment", downloadFileName); //二进制数据下载 headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); return new ResponseEntity<>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED); }
因为使用了Apache Commons FileUpload组件的FileUtils,所以在pom.xml文件中需要导入common-io依赖
<!--commons-io可以不用自己导入,fileupload已经依赖了io--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)