前端文件下载——点击下载和二进制流下载

下载文件有两种情况:

  • 点击文件的地址直接下载
  • 点击文件的地址发生跳转,变成查看文件。

无论那种情况都需要获取文件的地址

https://media.w3.org/2010/05/sintel/trailer.mp4

但有时只有文件的路径

/oss/jxb/temp/tmp_13c57f0757fef1b4fdd9141fc06558c3a50fd0fa6fcd98cc_1698372495702.pdf

需要 环境变量+路径 拼接获取完整的文件地址

vue2 和 vue3 的环境配置不相同
环境配置请查看 src/.env.development文件,自行拼接

  • vue2+vue/cli

    • process.env.VUE_APP_API_BASE_URL + url
      
  • vue3+vite

    • import.meta.env.VITE_BASE_URL + url
      

点击就能下载的文件

  • a标签
  • window.location.href
  • window.open

a标签

// 测试视频
const video_url = 'https://media.w3.org/2010/05/sintel/trailer.mp4';
// 下载函数
function download(url,name){
	const a = document.createElement("a");
	a.href = url;
	a.download = name;
	a.click();
	a.remove();
}
	
download(video_url, ('test_video'+Date.now()))

window.location.href

window.location.href = 'https://media.w3.org/2010/05/sintel/trailer.mp4'

window.open(url, target, features)

  • url:打开的新窗口或标签页的 URL。可以是绝对路径或相对路径,也可以是一个完整的 URL。
  • target:打开链接的目标位置
    • _blank:新标签或者新窗口
    • _self:当前窗口打开(默认)
  • features: 一个字符串,包含各种以逗号分隔的特性和选项,用于控制新窗口的外观和行为。
    • width,height,top,left……
// 在新标签页中打开指定 URL
window.open("https://www.example.com");

// 在新窗口中打开指定 URL,指定窗口大小
window.open("https://www.example.com", "_blank", "width=600,height=400");

不能直接下载。使用fetch

需要通过fetch或者axios发送请求,获取二进制流(blob对象),然后进行下载

fetch是浏览器内置API

const download = (url, name, callback) => {
  fetch(url)
    .then((res) => res.blob())
    .then((blob) => {
      const a = document.createElement("a");
      const objectUrl = window.URL.createObjectURL(blob);
      a.download = name;
      a.href = objectUrl;
      a.click();
      window.URL.revokeObjectURL(objectUrl);
      a.remove();
    });
};
  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值