2017-02-17 65 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); 
});