我正在尝试使用 javascript 创建要下载的文件列表的虚拟链接。问题是它在新选项卡中打开所有文件,而不是直接下载。我希望下载它而不是在新选项卡中打开它。
任何有关此问题的帮助将不胜感激。到目前为止,我已经尝试了以下代码来达到目的。
var link = document.createElement('a');
link.style.display = 'none';
document.body.appendChild(link);
for (var i = 0; i < links.length; i++) {
link.href = links[i];
link.download = tfiles[i];
link.target = '_blank';
link.click();
}
document.body.removeChild(link);
最佳答案
不要像 link.download = tfiles[i];
这样设置下载属性,而是使用 setAttribute('download',"download_filename")
。所以生成的代码将如下所示
var link = document.createElement('a');
link.style.display = 'none';
document.body.appendChild(link);
for (var i = 0; i < links.length; i++) {
link.href = links[i];
link.setAttribute('download',tfiles[i]);
link.target = '_blank';
link.click();
}
document.body.removeChild(link);
假设tfiles
是您要下载的文件的文件名数组。
在一个简单的 html 文件中尝试此工作代码以进行更多练习。该代码可能无法在 stackoverflow run 片段中运行,因为这是一个沙盒环境。
<!DOCTYPE html>
<html>
<body>
<script>
function download() {
var link = document.createElement('a');
link.style.display = 'none';
document.body.appendChild(link);
link.setAttribute('download', "download");
link.href = "https://picsum.photos/id/237/200/300";
link.target = '_blank';
link.click();
}
</script>
<p>Click on the download button to download the image:
<p>
<button onClick="download()"> download</button>
<p><b>Note:</b> The download attribute is not supported in Edge version 12, IE, Safari 10 (and earlier), or Opera version 12 (and earlier).</p>
</body>
</html>
关于JavaScript 下载文本文件而不是打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58123304/