js下载文件的方法(H5、PC)(小程序)

这篇具有很好参考价值的文章主要介绍了js下载文件的方法(H5、PC)(小程序)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、H5,PC

当后端返回的资源是链接时,此时可以使用 a 标签或者 window.location.href直接打开下载。

1、a 标签形式

利用a标签download 属性,当a标签被点击时,浏览器会以下载文件方式下载 href 属性上的链接。

// 需要点击下载 href:资源地址, downlod:下载后的文件名称
<a href="https://example.com" download="example.html">下载</a>
 
// 封装方法-直接调用即可 href:资源地址, title:下载后的文件名称
function download(href, title) {
    const a = document.createElement('a');
    a.setAttribute('href', href);
    a.setAttribute('download', title);
    a.click();
}
download('https://example.com', 'test')

2、window.location.href 直接打开下载

window.location.href === 'https://example.com'

3、后端返的文件流下载

function download(file) => {
  const blob = new Blob([file]);
  const elink: any = document.createElement("a"); //创建a标签节点
  elink.download = "download.xlsx"; //下载出来的名字(带后缀)
  elink.style.display = "none"; //隐藏标签
  elink.href = window.URL.createObjectURL(blob); //创建好的url放入a标签href中
  document.body.appendChild(elink); //追加到body中
  elink.click(); //执行a标签的点击
  window.URL.revokeObjectURL(elink.href); //浏览器打开excel文件
};

二、小程序下载方法

1. 下载到临时文件可预览(没有保存到相册)

  // 点击下载视频
  onVideo() {
    wx.downloadFile({
      url: 'https://example.com', // 文件的线上地址
      success: function (res) { //下载成功是临时文件
        console.log(res)
        wx.getFileSystemManager().saveFile({ //需要保存在本地
          tempFilePath: res.tempFilePath,
          success: function (res) { //成功返回本地缓存路径
            const save = res.savedFilePath
            console.log(save)
            wx.openDocument({ //一般采用这个打开 但是不支持txt所以我换了一种
              filePath: save,
              success: function (res) {
                console.log("打开成功") //doc, xls, ppt, pdf, docx, xlsx, pptx需要有相对应的软件,自动打开对应软件显示比如docx打开word
              }
            })
          }
        })
      }
    })
  },

2. 授权保存到相册文章来源地址https://www.toymoban.com/news/detail-503163.html

  // 授权下载
  downloadAlbum() {
    var that = this;
    // 下载链接的地址
    var link = 'https://example.com'; // 文件的线上地址
    // 获取用户授权
    wx.getSetting({
      success(res) {
        // 如果已授权
        if (res.authSetting['scope.writePhotosAlbum']) {
          that.saveAlbum(link);
          // 如果没有授权 
        } else if (res.authSetting['scope.writePhotosAlbum'] === undefined) {
          // 调起用户授权
          wx.authorize({
            scope: 'scope.writePhotosAlbum',
            success() {
              that.saveAlbum(link);
            },
            fail() {
              wx.showToast({
                title: '您没有授权,无法保存到相册',
                icon: 'none'
              })
            }
          })
          // 如果之前授权已拒绝
        } else {
          wx.openSetting({
            success(res) {
              if (res.authSetting['scope.writePhotosAlbum']) {
                that.saveAlbum(link);
              } else {
                wx.showToast({
                  title: '您没有授权,无法保存到相册',
                  icon: 'none'
                })
              }
            }
          })
        }
      }
    })

  },

  // 保存影集
  saveAlbum(link) {
    wx.downloadFile({
      url: link,
      success(res) {
        if (res.statusCode === 200) {
          var path = res.tempFilePath
          wx.saveVideoToPhotosAlbum({
            filePath: path,
            success(res) {
              if (res.errMsg == 'saveVideoToPhotosAlbum:ok') {
                wx.showToast({
                  title: '下载完成',
                })
              }
            }
          })
        }
      }
    })
  },

到了这里,关于js下载文件的方法(H5、PC)(小程序)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 后端返回文件流,前端怎么导出、下载

            工作中肯定有很多导出excel、下载文件这种功能。一般都是后端做好,我们去请求对应的接口就行了,前端还需要做一些处理就可以实现导出、下载功能了。具体怎么操作呢,我们来看看!         我们在请求的时候 需要定义responseType【响应类型】为blob类型,如果

    2024年02月12日
    浏览(59)
  • 后端返回base64文件前端如何下载

    1.后端返回base64格式文件 2.前端代码 3.请求封装

    2024年02月05日
    浏览(62)
  • 前端处理后端返回的文件流,进行文件下载

    二进制流格式  Blob格式 前言:         需求:根据后端接口返回的文件流进行数据处理,并实现文件的下载,且下载文件为word文档. 封装下载文件接口: 最开始没带 responseType:\\\"Blob\\\" ,进行文件下载后,里面的内容全部是乱码!!! 代码实现:  知识点补充:         1、n

    2024年02月07日
    浏览(61)
  • 前端基于axios请求下载文件(后端返回Blob文件流)

    前端小白第一篇csdn文章就当自己记录学习啦! 我自己遇到的情况写在前面防止有人和我不一样,浪费时间浏览; 调用下载接口后端给我返回的数据格式(即文件流格式)如下: 1.按钮定义点击事件 2.调用后端接口 在使用 axios 请求下载文件 api 接口时,注意区分不同请求方法

    2024年02月11日
    浏览(65)
  • Java后端向前端返回文件流——实现下载功能!

    前端实现文件下载功能有多种方法,这里就不一一介绍,这里只介绍使用文件流下载的实现方法。 既然是文件流那就肯定需要给前端返回一堆二进制编码,作为后端就可以返回一个 OutPutStream 后端可以使用Java中servlet提供的 HttpServletResponse ,核心步骤是要设置响应的数据类型

    2024年02月08日
    浏览(47)
  • Java后端向前端返回文件流——实现下载功能

    前端实现文件下载功能有多种方法,这里就不一一介绍,这里只介绍使用文件流下载的实现方法。 既然是文件流那就肯定需要给前端返回一堆二进制编码,作为后端就可以返回一个 OutPutStream 后端可以使用Java中servlet提供的 HttpServletResponse ,核心步骤是要设置响应的数据类型

    2024年02月11日
    浏览(49)
  • 微信小程序下载后端返回的文件流

    responseType: \\\"arraybuffer\\\",  请求后端的二进制文件流 必须要加这段声明 ,否则会导致下载的文件打不开或者打开空白

    2024年02月10日
    浏览(37)
  • 【前端】根据后端返回的url进行下载并设置文件下载名称

            在我们项目当中存储文件是存储到厂商的服务器上的,然后厂商返回一个可以直接下载url地址,但是前端使用这个url下载的时候永远都是保存一个名字,这时候我们就需要设置文件保存的名称,         那么如何实现呢?使用了fetch将url转换成了blob即可。 代码

    2024年02月04日
    浏览(62)
  • 前端调接口下载(导出)后端返回.zip压缩文件流(的坑!)

    前言:基于vue2+element-ui的一个后台管理系统,需求评审要加一个导入导出文件的功能,由于可能导出的数据量过大(几十万条数据),下载时间过长,所以用.zip压缩文件替代excel文件 本人以前也做过导出文件的功能,但是用的方法是后端处理数据然后放到另一个服务器上,前

    2024年02月03日
    浏览(51)
  • 前端下载后端返回的文件流,取请求头中的文件名称

    但是用上面的方法发现只能顺利下载文件, res.headers[\\\"content-disposition\\\"] 取不到后端给前端返回的请求头。 通过问题排查发现: 如图,前端需要取的 res.headers 和 res.data 是一层的,当拦截器中返回 res.data 后,就取不到外层的 headers, 因此前端要自己写 axios 请求方法 但是前端依

    2024年02月01日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包