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>
posted @   Arbitrary233  阅读(121)  评论(0编辑  收藏  举报
编辑推荐:
· 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)
点击右上角即可分享
微信分享提示