【前端文件下载】直接下载和在浏览器显示下载进度的下载方法

这篇具有很好参考价值的文章主要介绍了【前端文件下载】直接下载和在浏览器显示下载进度的下载方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文件下载方法

之前做下载文件遇到了点问题, 就趁此机会总结一下前端下载文件的方法:

  1. 如果是浏览器支持的类型, 那么打开的话是一个preview操作, 那么针对浏览器不支持预览的类型, 如果打开的话就会进行下载操作

    a. 地址栏直接输入URL
    b. window.location.href = URL
    c. window.open(URL)

  2. 使用a标签来下载, 利用a标签的download属性, 并且可以自定义下载文件的名称
    也可以直接通过js来创建一个a标签, 然后放入body里, 触发其点击事件来下载, 下载过后remove即可

<a href="/xx/xxx.jpg" download="fileName">
  1. 通过XMLHttpRequest下载
    缺点: 此方法是下载完毕之后才在浏览器左下角弹出对应的文件信息, 没有下载的进度, 如果文件比较大的话, 就会感觉点击了只是在loading但是并不能确定文件是否在下载, 也无法知道文件的下载进度, 体验感不好
// 接收url fileName, 以及文件下载成功之后的回调
downLoadFile(url, fileName, callback) {
  const url2 = url; // url.replace(/\\/g, "/");
  const xhr = new XMLHttpRequest();
  xhr.open("GET", url2, true);
  xhr.responseType = "blob";
  //xhr.setRequestHeader('Authorization', 'Basic a2VybWl0Omtlcm1pdA==');
  // 为了避免大文件影响用户体验,建议加loading
  xhr.onload = () => {
    if (xhr.status === 200) {
      // 获取文件blob数据并保存
      // const suffix = this.getFileSuffix.call(this, url, fileName);
      // this.saveAs.call(this, xhr.response, fileName)
      this.saveAs.call(this, xhr.response, fileName)
    }
	// 下载成功之后执行回调
    callback && callback();
  };
  xhr.send();
},
  1. 通过OSS实现有进度条的下载方法
    优点: 点击下载之后直接在浏览器左下角弹出对应的文件信息以及下载的进度, 体验感比较好
// 下载操作
downloadAction(row, type = '') {
  // 获取上传参数
  getDownloadParam().then(data => {
    // 拿到参数之后去创建 OSS 客户端对象
    this.createOssClient(data).then(client => {
      const filename = row.name;
      const response = {
        'content-disposition': `attachment; filename=${encodeURIComponent(filename)}`
      };

      const url = client.signatureUrl(row.file_path, { response });
      window.location.href = url;
    });
  }).catch(err => { })
},
// 创建 OSS 客户端对象
createOssClient(data) {
  return new Promise((resolve) => {
    const client = new OSS({
      region: data.region,
      accessKeyId: data.access_key_id,
      accessKeySecret: data.access_key_secret,
      stsToken: data.security_token,
      bucket: data.bucket,
    });

    resolve(client)
  })
},

欢迎大家一起讨论学习😊~文章来源地址https://www.toymoban.com/news/detail-445995.html

到了这里,关于【前端文件下载】直接下载和在浏览器显示下载进度的下载方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信H5下载文件、微信浏览器无法下载文件解决方案

    手机端的微信访问网页的时候,是禁止直接下载文件的 但是IOS端可以预览.txt/.doc/.docx/.xls/xlsx/.pdf等格式的文件,Android端在下载这些格式的文件时,可以唤起 ‘即将离开微信,在浏览器打开’ 提示 所以,根据手机微信的这些限制,考虑在下载文件时,使Android微信在下载任何

    2024年02月16日
    浏览(90)
  • google浏览器下载文件提示无法安全地下载怎么解决?

    在使用google浏览器下载文件的时候,弹出了“无法安全下载”的提示,搞了文件都下载不下来,网上查了一下,是因为chrome认为使用非https链接下载文件是不安全的,在新版本中阻止了用户下载。 目录 1、打开google浏览器的设置

    2024年04月24日
    浏览(45)
  • 谷歌浏览器下载文件提示无法安全地下载怎么解决?

    程序代码园发文地址: 谷歌浏览器下载文件提示无法安全地下载怎么解决?-程序代码园 小说,Java,HTML,Java小工具,程序代码园,http://www.byqws.com/ ,谷歌浏览器下载文件提示无法安全地下载怎么解决? http://www.byqws.com/blog/1067.html        今天有同事说在谷歌浏览器中下载文件,弹出

    2024年02月07日
    浏览(69)
  • 微信浏览器H5下载文件

    微信浏览器无法下载文件,我们可以跳转外部浏览器进行下载。 首先绑定按钮事件(我这里用的uniapp开发) button class=“btn” @click=“downFile”点击下载 然后判断当前页面是否是微信浏览器,若是,提示用户打开右上角选择浏览器打开链接,若不是,进行下载 进入默认浏览器

    2024年02月16日
    浏览(79)
  • python + selenium 自动下载浏览器驱动文件

    python + selenium 自动下载浏览器驱动文件

    2024年02月02日
    浏览(55)
  • 解决selenium遇到火狐浏览器自动打开下载文件

       这个图标发生变化说明可以了,不用在意后面的文字,这样设置就已经生效!

    2024年02月11日
    浏览(71)
  • Mac 浏览器下载的文件名总是「乱码」

    如果可以实现记得点赞分享,谢谢老铁~ 本文所说的方法是在出现文件名乱码情况下,如何恢复文件名的正确中文名称,并非一劳永逸地避免乱码的出现。这是由于下载文件名称乱码的出现,往往是系统、浏览器、网站三方面因素共同影响导致的,错综复杂。想要避免乱码的

    2024年02月04日
    浏览(58)
  • selenium设置(有界面/无界面浏览器)下载文件路径

    配置方法是添加 download.default_directory ,如: 对于无界面浏览器,为了安全,默认是不允许在无界面下进行下载文件到本地的操作的,但是可以通过配置进行修改,详细请参考:https://stackoverflow.com/questions/45631715/downloading-with-chrome-headless-and-selenium

    2024年02月17日
    浏览(39)
  • java实现pdf文件添加水印,下载到浏览器

    添加itextpdf依赖 根据需求,不需要指定路径可以删除对应的输出流 效果如下:代码中的相对路径在src平级目录下,test.pdf是PdfStamper里面fileOutputStream生成的,test1.pdf是fos生成的 浏览器下载的如下: 生成的pdf内容如下(红框里面是pdf原来的内容,可以自己调整代码中注释掉的设

    2024年02月05日
    浏览(59)
  • java实现浏览器下载附件时文件名中文乱码解决方案

    方案一:URLEncoder 解决 IE 和 谷歌浏览器的附件中文名问题。 如果客户端浏览器是 IE 浏览器 或者 是谷歌浏览器。我们需要使用 URLEncoder 类先对中文名进行 UTF-8 的编码 操作。 因为 IE 浏览器和谷歌浏览器收到含有编码后的字符串后会以 UTF-8 字符集进行解码显示。 方案二:B

    2024年03月09日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包