Laravel

Laravelでresponse直後にファイルを削除する

Laravelで一時ファイルをレスポンスで返した後にファイルを削除したい!

...と思って調べたところ、
公式ドキュメントなどでは見つからなかったので記載します。

結論から書くとdeleteFileAfterSend() というSymfony由来の機能を使います。
※LaravelはSymfonyを組み込んだフレームワークなので最初から入っています。

使い方は簡単で、fileのレスポンスをする際に ->deleteFileAfterSend(true) をつけるだけでOKです。

例1:
return response()->file($file_path)->deleteFileAfterSend(true); // 出力して元ファイル削除
例2:
return response()->download($file_path, $file_name)->deleteFileAfterSend(true); // 出力して元ファイル削除

参考になれば幸いです。

-Laravel