在 Laravel 中使用 Response->download() 下载文件后如何删除文件

How to delete a file after downloading it with Response->download() in Laravel

我已经使用 fputcsv() 生成了一个 CSV 文件,然后我 return 从控制器下载了文件。通过浏览器下载成功,但我也想下载后删除文件。

//controller class
public function downloadCSV{
...
    return response()->download($filePath, $fileName, $headers);
}

如何调用我的删除函数。

//controller class
csvService->deleteCSV($fileName);

//csvService class
public function deleteCSV($filename) {
    if (File::exists(storage_path($filename))) {
          File::delete(storage_path($filename));
    }
}

我尝试了以下方法。文件未下载,但已成功删除。

public function downloadCSV(...)
    ...
    response()->download($filePath, $fileName, $headers);

    return $csvService->deleteCSV($fileName);
}

使用deleteFileAfterSend方法:

return response()->download($filePath, $fileName, $headers)->deleteFileAfterSend(true);

File Download and Responses

//controller class
public function downloadAndDeleteCSV{
    ...
    return response()->download($filePath, $fileName, $headers)->deleteFileAfterSend(true);
}