
vue实现文件下载
无需多余步骤:通过设置download属性即可完成文件下载 不受浏览器限制:直接触发下载,不会因为浏览器限制而失败 简单易实现:无需复杂的文件拼接或传输 处理文件大小:注意文件的大小,不要传输过大的文件 回复类型设置:记得在前端设置returnType为'blob' 防止多次点击:在点击时立即处理,避免重复操作 Vue文件下载的简单方法 使用步骤详解 后端接口配置示例 完整代码示例
发布日期:2021-05-14 08:28:44
浏览次数:16
分类:精选文章
本文共 1886 字,大约阅读时间需要 6 分钟。
Vue中实现文件下载,可以使用a链接的方式,这是最简单的方法。对于前端开发人员而言,将文件以Blob形式返回,再通过a链接触发下载,就是一个直接又高效的解决方案。
显著特点
FileAPI 操作示例
以下是使用FileAPI进行文件处理的基本示例代码:
handlePreview文件表单的` file-input `元素// 检查用户是否安装了 Blob APIif (window.File && window.Blob) { // 前端请求接口方法 handlePreview(file) { let typeArray = file.url.split('.') let type = typeArray[typeArray.length-1] let data = { url: file.url, name: file.name } fileUpload._getDownLoad(data).then((res) => { let url = window.URL.createObjectURL(new Blob([res])) let link = document.createElement('a') link.style.display = 'none' link.href = url link.setAttribute('download', file.name) document.body.appendChild(link) link.click() }) }}
后端配置示例
@RequestMapping(value = "/getDownLoad", method = RequestMethod.POST)public void getDownLoad(HttpServletResponse response, @RequestBody Imgurl imgurl) throws IOException { //adaş littre kebab-case noodle File file = new File(imgurl.getUrl()) inputStream = new FileInputStream(file) ByteArrayOutputStream os = new ByteArrayOutputStream() byte[] buffer = new byte[1024] int length while ((length = inputStream.read(buffer)) != -1) { os.write(buffer, 0, length) } byte[] data = os.toByteArray() response.addHeader("Content-Disposition", "attachment; filename=\"" + URLEncoder.encode(imgurl.getName(), "UTF-8") + "\"") response.addHeader("Content-Length", String.valueOf(data.length)) response.setContentType("application/octet-stream; charset=UTF-8") IOUtils.write(data, response.getOutputStream())}
注意事项
目录结构
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月12日 22时26分37秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
BUU-MISC-认真你就输了
2019-03-09
BUU-MISC-caesar
2019-03-09
【专题2:电子工程师 之 上位机】 之 【36.事件重载】
2019-03-09
【专题3:电子工程师 之 上位机】 之 【46.QT音频接口】
2019-03-09
一文理解设计模式--命令模式(Command)
2019-03-09
VTK:可视化之RandomProbe
2019-03-09
block多队列分析 - 2. block多队列的初始化
2019-03-09
Java时间
2019-03-09
不编译只打包system或者vendor image命令
2019-03-09
The wxWindows Library Licence (WXwindows)
2019-03-09
leetcode——第203题——虚拟头结点
2019-03-09
【编程】C语言入门:1到 100 的所有整数中出现多少个数字9
2019-03-09
MySQL----基础及常用命令
2019-03-09
flink启动(二)
2019-03-09
前端开发进阶手册.pdf
2019-03-09
软件架构设计和MESH经验之谈
2019-03-09
redis持久化分析
2019-03-09
关于宝塔面板安装的mysql用Navicat连接出现2003的错误解决
2019-03-09
Windows2016 FTP用户隔离
2019-03-09