Laravel - Удалить локальный файл после отправки клиенту


Я использую следующее для отправки PDF-файла пользователю, возвращающему

response()->download($filename); 

После того, как файл был отправлен для загрузки, нет необходимости хранить его на сервере, и я хотел бы удалить его, чтобы они не засоряли хранилище сервера. Как лучше всего удалить файл после его загрузки? Я собирался использовать завершаемое промежуточное программное обеспечение для обработки этого. Это лучший способ сделать это с Laravel 5.1?

Author: ackerchez, 2016-06-17

3 answers

Просто опубликуйте это здесь на случай, если у кого-то еще возникнет этот вопрос...

Можно перенести имя файла в сеанс, а затем использовать завершаемое промежуточное программное обеспечение для извлечения переменной сеанса и отсоединения файла.

 0
Author: ackerchez, 2016-06-17 12:38:15

Вы можете поместить его в очередь и запустить задание удаления, чтобы удалить файл через определенный промежуток времени после загрузки файла.

Документация Ларавеля довольно аккуратная.

 0
Author: Oluwafemi Sule, 2016-06-17 12:38:34

Я предлагаю вам создать систему событий/прослушивателей, чтобы код оставался чистым.

1. шаг

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

2. шаг php artisan event:generate

В вашей модели

Пишите так

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

//Слушатель

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

Также вы могли бы создавать очереди:)

Удачи!

 0
Author: nemonake, 2016-06-17 12:49:25