ITblog

cakephp3でファイルをサーバからダウンロード後に削除する方法

2021年08月18日

cakephp3で、ファイルをサーバからダウンロード後に削除する方法についてのメモ書きです。

Cakephp3で、サーバ上からダウンロードするには

$this->response->withFile(

メソッドが便利ですが、実行した時点でファイルが出力されてしまうので、その後サーバ上のファイルを削除しようとした場合、その後にファイル削除しようとした場合にうまく行かずに困っていました。

Laravelだと、

response()->download($pathToFile, $name)->deleteFileAfterSend(true)

みたいな方法でダウンロード後削除することができるのですが、cakephpではなく、どうしたものかと…。

それで色々調べたところ、cakephpの上記のメソッドを使わずに、PHPに直接記述したダウンロードする方法を取ることで解決しました。

phpに直接書く場合は、

//ファイルダウンロード
header (“Content-disposition: attachment; filename=wa3_db.sql”);
header (“Content-type: application/octet-stream; name=wa3_db.sql”);

 readfile($fileName);

 //ファイル削除
 unlink($fileName);

みたいなかんじで、readfile後に、unlinkすることで対処できました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です