当前位置: 首页 > news >正文

SpringMVC文件下载

    <!--解决找不到“jquery-3.4.1.min.js”(静态资源访问)的问题
-->
<mvc:default-servlet-handler/>

方式1:如果去掉download就是查看图片

   <a href="${pageContext.request.contextPath}/uploadfiles/${requestScope.filename}" download>下载</a>

方式2:通过程序编码(下载对话框)的方式实现下载 如果要激活下载对话框,必须设置响应头:       将"Content-Disposition"的值设置为"attachment" 如果要将文件传输到客户端,需要将文件转化为字节流(byte[])放在响应中 因此,下载文件其实是要修改http响应 在SpringMVC框架中,可以使用ResponseEntity表示HTTP响应:状态码,响应头和响应内容。因此,我们可以使用它来配置HTTP响应实现文件的下载

页面可以这样

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<fieldset><legend>文件上传成功</legend>服务器名称:${requestScope.filename}<br>文件描述:${requestScope.description}<br><a href="${pageContext.request.contextPath}/uploadfiles/${requestScope.filename}">查看图片</a><a href="${pageContext.request.contextPath}/uploadfiles/${requestScope.filename}" download>下载图片</a><a href="${pageContext.request.contextPath}/download/${requestScope.filename}">点击下载</a>
</fieldset>
</body>
</html>

控制器代码

 @RequestMapping("/download/{filename}")public ResponseEntity<byte[]> download(@PathVariable String filename, HttpServletRequest request)throws IOException {
// 获取要下载文件字节流ServletContext servletContext = request.getServletContext();InputStream in = servletContext.getResourceAsStream("uploadfiles/" + filename);
//设置响应内容:将文件转换为字节数组byte[] body = new byte[in.available()];in.read(body);
// 设置响应头,激活下载框HttpHeaders headers = new HttpHeaders();headers.add("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename,"utf-8"));
// 设置响应状态为200HttpStatus statusCode = HttpStatus.OK;
// 根据页面内容、页面头、页面状态创建并跳转到该页面(实际返回的是下载文件数据)ResponseEntity<byte[]> response = new ResponseEntity<byte[]>(body, headers, statusCode);return response;}

http://www.lryc.cn/news/249494.html

相关文章:

  • 前端项目打包放到springboot项目时,访问不带index.html
  • Tomcat注册为服务后,如何配置Tomcat内存大小
  • C语言入门实战教程——嵌入式必备教程(2023年版最全最新整理)
  • Chatbot开发三剑客:LLAMA、LangChain和Python
  • 【Spring之AOP底层源码解析】
  • 【UCAS自然语言处理作业二】训练FFN, RNN, Attention机制的语言模型,并计算测试集上的PPL
  • RabbitMQ消息模型之Sample
  • 安全技术与防火墙
  • Windows系统搭建Appium 2 和 Appium Inspector 环境
  • 计算机应用基础_错题集_OutLook操作题_操作系统应用题_电子表格---网络教育统考工作笔记005
  • 2023-11-26 LeetCode每日一题(统计子串中的唯一字符)
  • HTML新手入门笔记整理:特殊符号
  • 物联网中基于信任的安全性调查研究:挑战与问题
  • tex2D使用学习
  • [iOS开发]UITableView的性能优化
  • 使用opencv实现图像滤波
  • Swagger在php和java项目中的应用
  • java科学计数法表示数值
  • 基于C#实现树状数组
  • Ubuntu Server 20.04.6下Anaconda3安装Pytorch
  • C#-关于日志的功能扩展
  • 小程序禁止二次转发分享私密消息动态消息
  • 普乐蛙绵阳科博会一场VR科普航天科学盛宴科普知识
  • FFNPEG编译脚本
  • Python期末复习题库(下)——“Python”
  • tauri中使用rust调用动态链接库例子(使用libloading库和libc库)
  • Leetcode—739.每日温度【中等】
  • 毕业设计单片机可以用万能板吗?
  • spring boot整合Jasypt实现配置加密
  • java学校高校运动会报名信息管理系统springboot+jsp