こんにちは、ファイルのダウンロードの終了を検出します。ファイルはphpメソッドによって生成されます。
私はjsで3つの方法を試しました:-2つはファイルをダウンロードします-1つはphpスクリプトの終わりを検出します
1
function downloadTcReport(e, flag) {
e.preventDefault ? e.preventDefault() : e.returnValue = false;
window.location.href = "Phpz/download_tc.php?method=download_tc_report";
}
2
function downloadURL(url) {
var hiddenIFrameID = 'hiddenDownloader',
iframe = document.getElementById(hiddenIFrameID);
if (iframe === null) {
iframe = document.createElement('iframe');
iframe.id = hiddenIFrameID;
iframe.style.display = 'none';
document.body.appendChild(iframe);
}
iframe.src = url;
}
3
jQuery(e).load("Phpz/download_tc.php?method=download_tc_all_current_cl", function() {
alert("Win !!!");
});
そして私のphpコードの一部
if (@$_GET['method'] == 'download_tc_report') {
$obj = new downloadTC();
$content = $obj->get_last_report();
header("Content-Type: application/octet-stream");
header("Content-Length: " . strlen($content));
header("Content-Disposition: attachment; filename=\"tc_report.csv\"");
echo $content;
}
コード #1 と #2 を使用すると、場所を変更せずにファイルを正しくダウンロードできますが、ファイルの生成の終了を検出できません
コード #3 では、末尾を検出しますが、ファイルの文字列コンテンツを関数の "e" 要素の後ろに置きます。要素がない場合は何もありません。
したがって、まだ生成されていないファイルをダウンロードし、ファイルが送信されていることを検出する必要があります (使用例: ユーザーがボタンをクリックすると、読み込み中の div が表示され、生成が完了すると消えます)自分?
ありがとう
編集 :
function downloadURL(url) {
jQuery.ajax({
type: "GET",
url: url,
beforeSend: function() {
console.log("Begin");
},
success: function() {
console.log("End");
}
,
error: function() {
}
});
この機能も動作しません。終わりと始まりを検出しますが、ダウンロードを開きません (Excel ファイルをダウンロードし、Office で開くかどうかをたずねる場合など)。