Laravel - 在提供给客户端后删除本地文件

时间:2016-06-17 12:30:31

标签: php download laravel-5.1 response

我正在使用以下内容将PDF文件提供给用户返回

response()->download($filename); 

文件提供下载后,无需将其保留在服务器上,我希望将其删除,以免堵塞服务器存储。下载文件后删除文件的最佳方法是什么?我打算使用可终止的中间件来处理它。这是使用Laravel 5.1做到最好的方法吗?

3 个答案:

答案 0 :(得分:0)

如果其他人有这个问题,请发布此处......

可以将文件名闪存到会话中,然后使用可终止的中间件来获取会话变量并取消链接文件。

答案 1 :(得分:0)

您可以将其放入队列并运行删除作业,以便在文件下载后的某个时间间隔内删除该文件。

Laravel的documentation非常整洁。

答案 2 :(得分:0)

我建议您制作事件/侦听器系统,以便代码保持干净。

<强> 1.step

EventServiceProvider.php
protected $listen = [
    'App\Events\FileHaveDownloadedEvent' => [
        'App\Listeners\FileHaveDownloadedListener',
    ],
];

2.step php artisan event:generate

在您的模型中

像这样写

  Event::fire(new FileHaveDownloadedEvent(['filename' => $filename]));

//听众

public function handle(FileHaveDownloadedEvent $event)
{
    unlink('/directory/where/file/located/'.$event->filename);
}

你也可以排队:)

祝你好运!