我正在使用以下内容将PDF文件提供给用户返回
response()->download($filename);
文件提供下载后,无需将其保留在服务器上,我希望将其删除,以免堵塞服务器存储。下载文件后删除文件的最佳方法是什么?我打算使用可终止的中间件来处理它。这是使用Laravel 5.1做到最好的方法吗?
答案 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);
}
你也可以排队:)
祝你好运!