【问题标题】:How to delete a file after downloading it with Response->download() in Laravel如何在 Laravel 中使用 Response->download() 下载文件后删除文件
【发布时间】:2018-04-19 21:40:28
【问题描述】:

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

//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);
}

【问题讨论】:

标签: laravel download controller delete-file


【解决方案1】:

使用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);
}

【讨论】:

    猜你喜欢
    • 2013-12-23
    • 2013-01-18
    • 1970-01-01
    • 2014-12-05
    • 2014-10-16
    • 2017-12-11
    • 2015-03-13
    • 2016-01-02
    相关资源
    最近更新 更多