我尝试了多种不同的方法来在客户端上下载文件,但是我设法合理地正常工作的唯一方法是使用window.open,这有时会导致弹出窗口阻止程序问题。当我尝试创建并触发“ a”标签下载时,它只会从文件数组中下载第一个文件。
这是我的代码(不是很漂亮)...:
filterAndDownload = (state) => {
const arr = state.itemsForDownload;
const data = state.data;
let downloads = [];
// filter items and add to downloads list
for(let i = 0; i < arr.length; i++){
for(let j = 0; j < data.length; j++){
if(data[j].sku === arr[i]){ downloads.push(data[j]) }
}
}
// download each item in download list
downloads.forEach(item => {
window.open(item.full_source);
});
}
您可以使用iframe代替弹出窗口:
let downloads = ['http://...', 'http://...'];
downloads.forEach(src => {
var iframe = document.createElement("iframe");
iframe.setAttribute("src", src);
document.body.appendChild(iframe);
});