0

こんにちは、ファイルのダウンロードの終了を検出します。ファイルは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 で開くかどうかをたずねる場合など)。

4

0 に答える 0