2016-12-19 29 views
1

我想通過JavaScript在我的網站上下載資源。這是我目前擁有的代碼:.PDF和.JPG資產沒有用JavaScript下載?

//Creates an iFrame and adds ID to it to download 
var downloadURL = function downloadURL(url) { 
    var hiddenIFrameID = 'hiddenDownloader', 
     iframe = document.getElementById(hiddenIFrameID); 
    if (iframe === null) { 
     iframe = document.createElement('iframe'); 
     iframe.id = hiddenIFrameID; 
     iframe.style.display = 'none'; 
     document.body.appendChild(iframe); 
    } 
    iframe.src = url; 
}; 

這將創建一個iframe,如果沒有出現,給人的iFrame的「hiddenIFrameID」,並將其下載,客戶端的ID。目前正在下載.psd和.ai文件,但在下載.jpg或.pdf文件時無法解釋該文件。有什麼建議?這是我的HTML結構:

<a onclick="downloadURL('imagepath.jpg');">Download</a> 
+3

如果瀏覽器可以呈現它們,它可能只顯示iframe中的文件。哪些贏得了PSD或AI文件發生。 – putvande

+0

您需要訪問服務器端才能更改文件的標題。 – SeanKendle

+0

沒有服務器,這是所有本地(文件://) –

回答

1

爲了迫使一些文件(如圖像,PDF等)進行下載,而不是僅僅渲染/通過瀏覽器顯示:

  1. 要麼改變服務器端。該文件應該伴隨着Content-Disposition: attachment標題。這可以通過例如.htaccess文件完成。

  2. 或使用download屬性的鏈接。例如,<a href="imagepath.jpg" download>Download</a>

    • 您甚至可以通過創建隱藏鏈接並調用其click()方法從腳本內啓動下載。
+0

有更多的cro-bro友好嗎?我沒有使用服務器 –

+0

@KristinaRobinson,它是HTML5,它應該適用於所有現代瀏覽器。 – Sasha

+0

(@KristinaRobinson,哎呀,我看到Safari(和MSIE <13)還不支持它。對不起,我沒有其他解決方案,我要等到他們發佈固定版本或使用服務器端標頭。 )) – Sasha