首页 > 解决方案 > 如何在反应中下载多个文件

问题描述

我搜索并发现了多个关于它的问题,但每次我尝试这些回复时,我总是只下载一个文件或别名。

我尝试使用代码来制作下载文件(.h264 和 .json),这似乎对某些人有用:
-使用单个操作下载多个文件
-单击按钮时如何让用户下载多个文件?

我的最后一次尝试是:

function(uri, data, name) {
    let link = document.createElement("a");
    link.download = name;
    link.href = 'data:'+data+';charset=utf-8;base64,'+uri;
    link.target = "blank_";
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
  }

uri是我之前用 axios 获取的文件的数据。 data是哑剧类型。

此处使用此功能:

ListPath.forEach(path => {
    axios.all([axios.get(path+".h264"), axios.get(path+".json")]).then((data) => {
        console.log(data[0], data[1]);
        Utils.downloadFile(data[0].data, 'video/H264', "movie.h264");
        Utils.downloadFile(data[1].data, 'application/JSON', "data.json");
      }).catch(error => console.log(error))
})

当我点击下载一件事(一个 h264 和他的 json 相关联)时,它尝试只下载 json 并且失败(“网络错误”)并重定向到about:blank. 如果我在 json 行中添加注释,它只会下载重定向。

我也试过用 的方法window.open(),所以代码如下:

ListPath.forEach(path => {
    window.open(path+".h264", '_blank');
    window.open(path+".json", '_blank');
})

这里下载的是 h264 视频,但它只给出了真实链接的别名(就像我们在文件中下载文件一样http://mywebsite.com/data.json,在文件中它给出一行http://mywebsite.com/data.json),而对于 json,它只显示在其他选项卡上。

我在 macOS 下使用 chrome 进行测试。

我也尝试过js-download-filenpm 模块,但问题与以前相同。

标签: jsonreactjsdownloadh.264

解决方案


推荐阅读