#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. Небольшое объяснение или ссылка на документы повысят качество вашего ответа.