Я занимаюсь разработкой сайта электронной коммерции для продажи файлов и всех загружаемых файлов или объемом более 500 МБ. поэтому для большей защиты я храню все файлы в папке хранилища и создаю диск как этот
'academy' => [
'driver' => 'local',
'root' => storage_path('app/academy'),
],
, так как я упоминаю, что все файлы имеют размер более 500 МБ, поэтому я не могу просто использовать Responce::download
(после двух загрузок === заполнить память завершения работы сервера)
, поэтому я ищу в StackOverflow и нахожу ответы # 1 и # 2 , поэтому я использую этот код для загрузки файла:
$fs = Storage::disk('academy')->getDriver();
$fileName = $file; //-> path to file
$metaData = $fs->getMetadata($fileName);
$stream = $fs->readStream($fileName);
if (ob_get_level()) ob_end_clean();
return response()->stream(
function () use ($stream) {
while(ob_end_flush());
fpassthru($stream);
},
200,
[
'Content-Type' => $metaData['type'],
'Content-disposition' => 'attachment; filename="' . $metaData['path'] . '"',
]);
и после запуска получаю эту ошибку
"Файл не найден по пути: D: /laragon/www/store/storage/app/academy/7FrggloHEjjc72rVJO1jPdF10nJL57MBMBvfwpYE.zip"
в этом файле
D: \ laragon \ www \ store \ vendor \ league \ flysystem \ src \ Filesystem.php Строка 388
public function assertPresent($path)
{
if ($this->config->get('disable_asserts', false) === false && ! $this->has($path)) {
throw new FileNotFoundException($path);
}
}
Самое смешное в этой ошибке - путь, который возвращается, если положить его в проводник Windows и открыть ZIP-файл (путь указан правильно)
и уже использованное хранилище php artisan: ссылка