以下のスクリプトで、URLにアクセスした際
サーバ側で動的にzipファイルを生成しダウンロードするシステムを運用しています。
今回、2GBを超えるファイルを圧縮しダウンロードしようとした結果、エラーが起きてしまいました。
サーバ側では、Completed 200 OK in 180425ms
と出力されており、
zipファイルも問題なく生成されておりました。
一方で、ブラウザのデベロッパーツールで確認すると504のエラーが発生し、
ダウンロードに失敗しているようです。
原因の分かる方、おられませんでしょうか?
ブラウザは、Google Chromeで確認しています。
(XX
分以上のリクエストは、504エラーを出すといったような仕様があるのでしょうか?)
JavaScript
1$(function () { 2 var download_flag; 3 $('.zip_download').on('click', function() { 4 if (download_flag) { 5 return; 6 } 7 modal_open('#loader_downloading'); 8 /* ダブルクリック対策 */ 9 download_flag = true; 10 let filename = $(this).data('name')+'.zip'; 11 var xhr = new XMLHttpRequest(); 12 xhr.responseType = 'blob'; 13 xhr.open('GET', $(this).data('url'), true); 14 xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); 15 xhr.onload = function() { 16 /* モーダルを閉じる */ 17 modal_closeAll(); 18 if (xhr.status == 200) { 19 //let downloadData = this.response; 20 let downloadData = new Blob([this.response], {type: 'application/zip'}); 21 if (window.navigator.msSaveBlob) { 22 window.navigator.msSaveBlob(downloadData, filename); // IE用 23 } else { 24 let downloadUrl = (window.URL || window.webkitURL).createObjectURL(downloadData); 25 let link = document.createElement('a'); 26 link.href = downloadUrl; 27 link.download = filename; 28 link.click(); 29 (window.URL || window.webkitURL).revokeObjectURL(downloadUrl); 30 } 31 } else if (xhr.status == 401) { 32 /* 認証エラーのアラートを表示 */ 33 modal_open('#modal_alert_unauthorizedError'); 34 } else { 35 /* 不明なエラーのアラートを表示 */ 36 modal_open('#modal_alert_anythingError'); 37 } 38 /* ダブルクリック対策 */ 39 download_flag = false; 40 } 41 xhr.onerror = function() { 42 /* モーダルを閉じる */ 43 modal_closeAll(); 44 /* 不明なエラーのアラートを表示 */ 45 modal_open('#modal_alert_anythingError'); 46 /* ダブルクリック対策 */ 47 download_flag = false; 48 } 49 xhr.send(null); 50 }); 51});
以上です。
よろしくお願い申し上げます。
回答1件
あなたの回答
tips
プレビュー