Я храню файлы для сайта в Rackspace, используя Flysystem. Загрузка не является проблемой, возникают проблемы с выяснением, как начать загрузку для файла — это то, что я пытался
Storage::disk('rackspace');
return response()->download('file-library/' . $file->filename);
В результате файл не может быть найден. Добавляет Storage::disk()
достаточно для того, чтобы Laravel смотрел в этом месте, а не локально? Каков наилучший способ сделать это?
Фрэнк здесь от Flysystem.
Предпочтительный способ сделать это — использовать вывод readStream в сочетании с Response :: stream.
<?php
$fs = Storage::disk('diskname')->getDriver();
$stream = $fs->readStream($file);
return Response::stream(function() use($stream) {
fpassthru($stream);
}, 200, [
"Content-Type" => $fs->getMimetype($file),
"Content-Length" => $fs->getSize($file),
"Content-disposition" => "attachment; filename=\"" . basename($file) . "\"",
]);
$fs
это League\Flysystem\Filesystem
пример. Я считаю, что есть метод для получения этого экземпляра в классе файловой системы, который предоставляет Laravel.
Добавляет
Storage::disk()
достаточно для того, чтобы Laravel смотрел в этом месте, а не локально?
Нет, это не повлияет response()->download()
звонки.
Примерно так должно работать:
return response()->download(Storage::disk('rackspace')->get('file-library/' . $file->filename));