次のコードを使用してダウンロードを提供します。
header("Content-Type:$mimetype");
header("Content-Disposition: attachment; filename=$filename");
header("Cache-Control:must-revalidate,post-check=0,pre-check=0");
header("Content-Length:".filesize($temp_filename));
readfile_chunked($temp_filename);
(readfile_chunkedは
http://nl2.php.net/manual/nl/function.readfile.phpから取得されます)
私の質問:ファイルがダウンロードされて保存されたかどうかを確認するにはどうすればよいですか?ダウンロード後の自動削除を可能にしたい。
ユーザーが[キャンセル]をクリックしてファイルをダウンロードしないと、関数が終了するように見えるため、以降のすべてのコマンドは実行されません。それは最高です。
ただし、ファイルがチャンクに収まるほど小さい場合はそうではありません。phpのreadfileは同じ振る舞いをしているようです。したがって、その場合、キャンセルがクリックされた場合でも、後続のすべてのコマンドが実行されます(そして、私のアプリケーションでは、ファイルが削除されますが、もちろん発生しないはずです)。
また、送信されたバイトをチェックしても役に立ちません。関数が存在する場合、キャンセルがクリックされた場合でも、単一のチャンクに収まる小さなファイルの完全なファイルサイズを常に返します。
それで、ダウンロードダイアログでクリックされるのをキャンセルする代わりに、ファイルがダウンロードされて開かれた/保存されたかどうかを判断するための実用的な方法はありますか?