Iron ajax下载文件

Iron ajax下载文件,ajax,download,polymer,Ajax,Download,Polymer,我想使用Polymer的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="downloadCsvCa

我想使用Polymer的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>


resosse实际上包含数据,但它不会触发浏览器下载文件。

我认为您需要在元素声明中使用
handle as=“blob”
属性。
你可以找到更多关于它的信息

为了将blob流式传输为文件,您可以在以下链接中使用FileSaver.js:

您似乎正在尝试下载CSV,这里有一个我使用过的解决方案,在Chrome和Safari上似乎运行良好。这是关于下载数据,然后使用虚拟


感谢您的回复,但它仍然不会触发响应中数据作为文件的下载。为什么要使用ajax下载文件?为什么不使用一个简单的新标签,使用您在代码中提供的url?嗨,Flavio,我知道,但我认为会有一个更优雅的解决方案。@FlavioOchoa请求包含一个标题。如果在新选项卡中打开URL,则无法控制传递的标题值。brava bravissima Angela
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);
});