"失败 - 网络错误"当尝试使用"下载"属性在HTML5中提供下载时

Ice*_*Box 18 html javascript python jquery flask

我正在尝试做的基本摘要:

  • 从用户获取文件(使用"dropzone"拖放引导程序模块来接收文件)
  • 修改并对文件执行一些"工作"
  • 将文件一起压缩为单个文件以供下载
  • 发送下载回用户下载(自动或链接,详见下文)

上面的粗线是那个不起作用的线,我正试图想出来.以下是该文章的相关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)
    });
});
Run Code Online (Sandbox Code Playgroud)

用户单击"转换上载的文件"按钮,然后将href更新为生成的zipfile位置,然后通过单击"下载文件"HTML下载生成的包.

到目前为止,我已经在Chrome中对此进行了测试并使用了开发人员控制台,我可以看到在点击下载按钮之前href正在正确更新,但它总是会出现"失败 - 网络错误"对话框.奇怪的是,当我点击"显示所有下载"然后点击失败的下载时,它就成功完成了.

问题我希望得到解答

  • 这里看起来有什么问题?
  • 这甚至是正确的方法吗?我正在尝试做的就是在完成该过程后将文件发送回用户.我担心"file://"无论如何都不正确,当服务器实际远离使用它的用户时,我会失败(目前它是本地的,因为我正在开发它)

编辑:我应该补充一点,这个后端目前正在Python的Flask上运行

Can*_*nis 20

显然这是Chrome问题,数据网址过长.我自己仍在努力,但显然有一些涉及Blob对象的解决方案.

请参阅此处:在fabric.js中将Canvas作为PNG下载,从而产生网络错误

在这里:如何将JavaScript数组信息导出到csv(在客户端)?


小智 13

基于如何将JavaScript数组信息导出到csv(在客户端)?以下是我为此问题实施解决方案的方法:

请注意,我只需要Chrome-web的解决方案,所以这就是我使用的.要获得完整的解决方案,您需要查看原始答案中的示例

$.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"
        });
    }
});
Run Code Online (Sandbox Code Playgroud)