2017-01-17 42 views
1

我有下面的代碼:電話API REST和zip文件下載到計算機

jQuery.ajax({ 
    type: "GET", 
    url: "http://localhost:8081/myservicethatcontainsazipfile",  
    contentType:'application/zip', 
    success: function (response) { 
     console.log("Successful"); 
    }, 
    error: function (xhr, ajaxOptions, thrownError) { 
     console.log("Error."); 
    } 
}); 

根據AJAX的規格,你不能直接將文件下載到計算機(安全原因) ,所以我想知道如何直接從客戶端下載此文件,而無需創建並單擊一個html元素和類似的選項?

+0

瀏覽器會自動下載文件(下載後關閉窗口開始),如果你告訴客戶端的瀏覽器去那個頁面:'window.open('http:// localhost:8081/myservicethathatcontainsazipfile')' – Adam

回答

0

你不能用AJAX做到這一點。但是,您可以重定向/打開一個將用戶帶到文件頁面的新窗口,該窗口將自動開始下載。

如果你不想要任何按鈕,你可以使用這些JavaScript代碼中的一行。

window.open(download_url, '_blank')

window.location = 'download_url'

採取注意,出於安全考慮,您將需要在開始下載前等待至少3-5秒。

setTimeout(() => window.location = 'download_url', 5000); 

你也應該看看How to start automatic download of a file in Internet Explorer?

+0

我需要傳遞一個url作爲參數還是隻能存儲我的zip併發送它? – Pablo

+0

@Pablo你唯一的參數是到下載頁面的URL。如果你可以在沒有任何JavaScript代碼的情況下找到它,那麼你可以重定向到它 – zurfyx

+0

這對我來說不起作用(手動操作),也許與CORS擴展有關? (chrome) – Pablo