2017-02-17 62 views
2

我想使用Polymer的Iron-Ajax下載文件。Iron-ajax下載文件

<iron-ajax 
    id="fileDownloader" 
    headers='{"Auth" :"token"}' 
    url="/my/server/rest/download/csv/{{id}}" 
    method="GET" 
    content-type="application/json" 
    on-response="downloadCsvCallLoaded" 
    on-error="downloadCsvCallFailed"> 
</iron-ajax> 

reposnse實際上包含數據,但它不會觸發瀏覽器下載文件。

回答

0

我認爲你需要在元素聲明中使用handle-as="blob"屬性。 Here你可以找到更多關於它的信息。

+0

感謝您的回覆,但它仍不會觸發響應中的數據作爲文件下載。 –

+1

爲什麼要使用ajax下載文件?爲什麼不使用一個簡單的新選項卡使用您在代碼中提供的url? –

+0

嗨弗拉維奧,我知道,但我認爲會有一個更優雅的解決方案。 –

0

似乎您試圖下載一個CSV,這裏我用了一個解決方法,似乎是工作在Chrome和Safari上很好。這是關於下載數據,然後使用虛擬<a>觸發下載使用嵌入式data:text作爲URI。 JS下載積分爲How to export JavaScript array info to csv (on client side)?

ironAjax.addEventListener("response", (event) => { 
    let csvContent = "data:text/csv;charset=utf-8," + event.detail.response; 
    var encodedUri = encodeURI(csvContent); 
    var link = document.createElement("a"); 
    link.setAttribute("href", encodedUri); 
    link.setAttribute("download", "filename.csv"); 
    document.body.appendChild(link); // Required for FF 
    link.click(); // This will download the data file named "my_data.csv". 
    document.body.removeChild(link); 
});