1

ファイルをphpのサーバー側スクリプトに送信するアップローダーアプレットを使用しています。ファイルのアップロードが完了する前にユーザーがページを閉じた場合、適切に処理できなかったため、ファイルがサーバーから削除されるようにしたいと考えています。

この問題は、1 つのサイトで 2 つのサーバー側スクリプトを同時に呼び出そうとしていることに起因しています。

アップローダー アプレットを実行せずにページを閉じると、ファイル削除スクリプトが呼び出されます。

$(window).bind('beforeunload', function(){
    $.post("cancel.php");
});

しかし、アップローダー アプレットを実行すると、イベントはトリガーされず、ファイルはサーバーに置かれたままになります。アップロード スクリプトを停止してキャンセル スクリプトを実行できるようにする方法はありますか? そうでない場合、キャンセル スクリプトを実行してウィンドウを閉じる前に、アップロード スクリプトが停止するのを待つ方法はありますか?

編集:ああ、あなたの質問への答えをグーグルで調べて、スタックオーバーフローに関するあなたの質問がグーグルで一番ヒットしていることを確認する喜び...

編集 2: beforeunload イベントで呼び出しの順序を並べ替えた後、必要なときに必要なスクリプトを呼び出すことができました。cancel()他のスクリプトを呼び出す前に、アプレットを呼び出していることを確認する必要がありました。

4

1 に答える 1

1

スクリプトを実行してファイルを動的に削除するのではなく、チェックサム (おそらく MD5 チェックサム) をサーバーに転送して、不完全なファイル転送をチェックしてみませんか?

参考: http: //php.net/manual/en/function.md5-file.php

このように、スクリプトを削除するために必要なスクリプト全体 (および HTTP 要求) に依存する必要はありません。データベースを使用して、チェックされていないファイルを適切にインデックス化します。

楽しんで頑張ってください!

于 2012-07-17T20:43:05.087 に答える