上記の太字の行は機能していない行で、私は理解しようとしています。その作品に関連する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で実行されていることを追加する必要があります
どうやらこれはChrome data-URLが長すぎる問題です。私はまだ自分で作業していますが、明らかにBlobオブジェクトに関係するいくつかのソリューションがあります。
こちらをご覧ください: Fabric.jsでCanvasをPNGとしてダウンロードし、ネットワークエラーを返します
JavaScript配列情報をcsvにエクスポートする方法(クライアント側で)? に基づいて、この問題の解決策を実装しました。
Chrome-webのソリューションのみが必要だったので、これが私が使用したものです。完全なソリューションについては、元のanswの例を確認する必要があります。
$.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"
});
}
});