上面的粗线是那个不起作用的线,我正试图想出来。以下是该文章的相关HTML和javascript:
<button type="button" class="btn btn-primary" id="transform">
<span class="glyphicon glyphicon-wrench"></span>
Transform Uploaded Files
</button>
<a id="test_dl" href="" download="user_download.zip">
Download File
</a>
$('#transform').click(function (e) {
$.getJSON('/transform', {}, function (final_zip){
var zipfile = "file://" + final_zip.zip_filename
$('a#test_dl').attr("href", zipfile)
});
});
用户单击“Transform Uploaded Files”按钮,然后将href更新为生成的zipfile位置,然后通过单击“Download File”HTML下载生成的包。
到目前为止,我已经在Chrome中对此进行了测试,并使用开发者控制台,我可以看到 href 在点击下载按钮之前正在正确更新,但它总是给出一个“失败 - 网络错误”对话框。奇怪的是,当我点击“显示所有下载”然后点击失败的下载时,它就会成功完成。
编辑:我应该补充一点,这个后端目前正在Python的Flask上运行
答案 0 :(得分:18)
显然这是Chrome问题,数据网址过长。我自己仍在使用它,但显然有一些涉及Blob对象的解决方案。
见这里:Download Canvas as PNG in fabric.js giving network Error
在这里:How to export JavaScript array info to csv (on client side)?
答案 1 :(得分:10)
基于How to export JavaScript array info to csv (on client side)?,我是如何为此问题实施解决方案的:
请注意,我只需要一个针对Chrome的解决方案 - 网络,所以这就是我使用的。要获得完整的解决方案,您需要查看原始答案中的示例
$.ajax({
url: "/getData",
dataType: "text",
success: function(data){
$("#download").attr({
"value": "Download",
"href": URL.createObjectURL(new Blob([data], {
type: "application/octet-stream"
})),
"download": "outputFile.csv"
});
}
});