IT 全栈开发

JS stream blob 数据流 文件下载

2022-05-27  本文已影响0人  醋留香
  1. 准备外网资源地址,利用前端的 ajax 或 axios 技术来完成文件下载
  2. 此时会发现 请求跨域了,我们可以利用node + koa 搭建代理服务器来完成对资源的请求
  3. node 服务器中 准备 接口, 去请求外网资源地址
router.get('/abc', async (ctx, next) => {
  // 地址可能会失效,需要大家自己去准备一下
  var mp3_url = "https://ld-sycdn.kuwo.cn/b82dc6e3ace7633ef0a7b79a7bceef32/628f4a38/resource/n3/68/76/2597978293.mp3"

  ctx.body = await new Promise((resolve, reject) => {
    axios({
      method: "get",
      url: mp3_url,
      responseType: 'stream',
    })
      .then((res) => {
        resolve(res.data)
      }).catch((err) => {
        console.log("请求出错")
        console.log(err)
        reject(err)
      })
  })
});
  1. 前端js代码
       // 导入 js-file-download 模块
        var fileDownload = require('js-file-download');


        axios({
            method: 'get',
            url: "http://localhost:3000/abc",
            responseType: 'blob',
        })
            .then(res => {
                console.log('请求成功。。。。。');
                fileDownload(res.data, './static/测试.mp3');
            })
            .catch(err => {
                alert('请求出错');
                alert(JSON.stringify(err));
           });

上一篇 下一篇

猜你喜欢

热点阅读