Laravel 4 — Файл не удаляется с помощью File::delete

#php #laravel #laravel-4

#php #laravel #laravel-4

Вопрос:

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

Метод File::delete() работает везде в моем приложении, кроме следующего:

 return Response::download( $tmpFile, $document->documentname );

File::delete( $tmpFile );
  

Любая помощь о том, почему это происходит, была бы отличной.

Приветствия

Ответ №1:

Если вы return отключаетесь от своей функции, это очевидно приводит к тому, что остальная часть функции не выполняется.

File::delete() Никогда не вызывается.


Теперь я понимаю, чего вы хотите .. что ж, если вы загрузите файл в память ( file_get_contents ), то вы можете удалить файл с диска и отправить загруженные данные в браузер.

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

Комментарии:

1. Это имело бы смысл… Каков наилучший способ удаления файла после его загрузки?

2. @BigJobbies запускает событие! Ознакомьтесь с документацией по событиям здесь: laravel.com/docs/events

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

4. @JoelHinz — Может ли событие быть запущено после ответа return?

5. Нет, вы запускаете его перед возвратом. Если удаление файла происходит слишком рано, вы можете поместить событие в очередь.

Ответ №2:

Сделайте это:

 return response()->download($filename)->deleteFileAfterSend($filename);
  

Комментарии:

1. Небольшое объяснение или ссылка на документы повысят качество вашего ответа.