簡體   English   中英

JavaScript 下載文本文件而不是打開

[英]JavaScript to download textfiles instead of opening

我正在嘗試使用 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 運行代碼段中運行,因為這是一個沙盒環境。

 <.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>

您將需要為此使用 Blob。 您可以使用 fetch 獲取 blob,然后下載。 類似於下面:

var link = document.createElement('a');
link.style.display = 'none';
document.body.appendChild(link);
for (var i = 0; i < links.length; i++) 
{
    fetch(links[i])
        .then(response => response.blob())
        .then(blob => {
            var url = window.URL.createObjectURL(blob);
            link.href = url;
            link.download = 'file_' + i;
            link.click();
            window.URL.revokeObjectURL(url)
         })
}
document.body.removeChild(link);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM