springboot 文件下载

前言

文件下载: 将服务器某个资源文件下载到用户本地计算机过程称之为文件下载
用户通过浏览器访问页面,点击链接之后,就能从服务器下载本地中。
具体思路:
a.确定项目中哪些资源可以被下载 aa.txt 用户须知.doc …
b.将可以被下载资源放入服务器指定位置 、文件上传服务器fastdfs(dfs 分布式文件存储系统 1000个节点 冗余备份 )
c.项目中开发一个下载页面download.jsp
提供下载文件链接
d.开发下载控制器controller

建立download目录

我们会在本项目中建立一个download目录
在这里插入图片描述

提供文件下载链接

<h1>测试文件下载</h1><a href="${pageContext.request.contextPath}/file/download?fileName=Hello.html">Hello.html</a><a href="${pageContext.request.contextPath}/file/download?fileName=项目日记.md">项目日记.md</a>
</body>

开发控制器

@Controller
@RequestMapping("file")
public class FileController {private static final Logger log = LoggerFactory.getLogger(FileController.class);//这里是用文件注入的方式来表示文件目录的。@Value("${file.download.dir}")private String realPath;/*** 文件下载* @param fileName*/@RequestMapping("download")public void download(String fileName, HttpServletResponse response) throws IOException {log.debug("当前下载文件名为: {}",fileName);log.debug("当前下载文件目录: {}",realPath);//1.去指定目录中读取文件File file = new File(realPath, fileName);//2.将文件读取为文件输入流FileInputStream is = new FileInputStream(file);//2.5 获取响应流之前 一定要设置以附件形式下载 attachment:附件response.setHeader("content-disposition","attachment;filename="+ URLEncoder.encode(fileName,"UTF-8"));//3.获取响应输出流ServletOutputStream os = response.getOutputStream();//4.输入流复制给输出流/*int len=0;byte[] b = new byte[1024];while(true){len = is.read(b);if(len==-1)break;os.write(b,0,len);}*/FileCopyUtils.copy(is,os);}}

application.yml

file:download:dir: D:\\Study\\java\\practical-projects\\spring-boot\\springbootTest5\\download  #指定下载目录测试环境

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/449165.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL篇----第三篇

系列文章目录 文章目录 系列文章目录前言一、InnoDB与MyISAM的区别二、索引三、常见索引原则有前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一、InnoDB与MyISAM…

上海市七普分乡、镇、街道数据, Shp、excel格式,多年龄段人口分布数据均有

基本信息. 数据名称: 上海市七普分乡、镇、街道数据 数据格式: Shp、excel 数据几何类型: 面 数据坐标系: WGS84 数据时间&#xff1a;2020年 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1zrks总人口数&#xff08;人&#xff09;…

【类和对象】4

日期类的拓展 c语言中的printf函数只能打印内置类型&#xff0c;为了弥补这一不足&#xff0c;c利用运算符重载可以打印自定义类型。 void operator<<(ostream&out);//声明在date.h中void Date::operator<<(ostream& out)//定义在date.cpp中 {out<<…

Java正则表达式之Pattern和Matcher

目录 前言一、Pattern和Matcher的简单使用二、Pattern详解2.1 Pattern 常用方法2.1.1 compile(String regex)2.1.2 matches(String regex, CharSequence input)2.1.3 split(CharSequence input)2.1.4 pattern()2.1.5 matcher(CharSequence input) 三、Matcher详解3.1 Matcher 常…

wangEditor v4的简单使用

当前文档是 wangEditor v4 版本的。 wangEditor v5 已经正式发布&#xff0c;可参考文档。 v5 发布之后&#xff0c;v4 将不再开发新功能。 介绍 English documentation wangEditor4 —— 轻量级 web 富文本编辑器&#xff0c;配置方便&#xff0c;使用简单。 官网&#…

[python]基于LSTR车道线实时检测onnx部署

【框架地址】 https://github.com/liuruijin17/LSTR 【LSTR算法介绍】 LSTR车道线检测算法是一种用于识别和定位车道线的计算机视觉算法。它基于图像处理和机器学习的技术&#xff0c;通过对道路图像进行分析和处理&#xff0c;提取出车道线的位置和方向等信息。 LSTR车道线…

「效果图渲染」效果图与3D影视动画渲染平台

效果图渲染和3D影视动画渲染都是视觉图像渲染的领域应用。效果图渲染主要服务于建筑、室内设计和产品设计等行业&#xff0c;这些领域通常对视觉呈现的精度和细节有较高要求。与之相比&#xff0c;3D影视动画渲染则普遍应用于电影、电视、视频游戏和广告等媒体领域&#xff0c;…

项目安全-----加密算法实现

目录 对称加密算法 AES &#xff08;ECB模式&#xff09; AES(CBC 模式)。 非对称加密 对称加密算法 对称加密算法&#xff0c;是使用相同的密钥进行加密和解密。使用对称加密算法来加密双方的通信的话&#xff0c;双方需要先约定一个密钥&#xff0c;加密方才能加密&#…

无人机激光雷达标定板

机载激光雷达标定板是用于校准和验证机载激光雷达系统的设备。由于机载激光雷达系统在测量地形、建筑物和植被等方面具有广泛的应用&#xff0c;因此标定板的使用对于确保测量结果的准确性和可靠性至关重要。 标定板通常由高反射率的材料制成&#xff0c;如镀金的玻璃或陶瓷&am…

flv视频格式批量截取封面图(不占内存版)--其他视频格式也通用

flv视频格式批量截取封面图&#xff08;不占内存版&#xff09;--其他视频格式也通用 需求&#xff08;实现的效果&#xff09;功能实现htmlcssjs 需求&#xff08;实现的效果&#xff09; 批量显示视频&#xff0c;后端若返回有imgUrl,则直接显示图1&#xff0c; 若无&#xf…

【推荐】运放作为跟随器时,负反馈上加电阻的作用?

请问何种信号源或者输出是什么状况下跟随器需要使用电阻呢&#xff1f;使用多大阻值&#xff1f; 答&#xff1a;信号源内阻较大时&#xff0c;添加阻值与信号源内阻相同的反馈电阻&#xff0c;可以减少输出失调电压&#xff0c;提高精度。 R2的作用是为了防止输出意外接地&am…

AspNet web api 和mvc 过滤器差异

最近在维护老项目。定义个拦截器记录接口日志。但是发现不生效 最后发现因为继承的 ApiController不是Controller 只能用 System.Web.Http下的拦截器生效。所以现在总结归纳一下 Web Api: System.Web.Http.Filters.ActionFilterAttribute 继承该类 Mvc: System.Web.Mvc.Ac…