SpringMVC-关于文件的下载

关于文件的下载,示例代码如下。

/**
 * @author: BNTang
 */
@Controller
public class MyFirstController {
    @RequestMapping("/download")
    public ResponseEntity<byte[]> download(HttpSession httpSession) throws Exception {
        // 1.获取 ServletContext
        ServletContext servletContext = httpSession.getServletContext();

        // 2.获取路径
        String realPath = servletContext.getRealPath("/images/zdy.jpg");

        // 3.创建一个输入流
        FileInputStream fileInputStream = new FileInputStream(realPath);
        byte[] bytes = new byte[fileInputStream.available()];

        // 4.将文件流读取到数组当中
        fileInputStream.read(bytes);

        // 5.创建请求头
        HttpHeaders httpHeaders = new HttpHeaders();

        // 6.对文件名进行编码
        String fileEncode = URLEncoder.encode("周冬雨.jpg", "UTF-8");

        // 7.告诉浏览器以附件的形式下载文件
        httpHeaders.add("Content-Disposition", "attachment;filename=" + fileEncode);

        // 8.设置响应码
        HttpStatus httpStatus = HttpStatus.OK;

        ResponseEntity<byte[]> responseEntity = new ResponseEntity<>(bytes, httpHeaders, httpStatus);

        // 9.关闭流
        fileInputStream.close();

        return responseEntity;
    }
}

编写好了之后启动工程,发送请求效果如下所示。

posted @   BNTang  阅读(96)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示