Laravel 5 Flysystem — скачать файл с удаленного диска

Я храню файлы для сайта в Rackspace, используя Flysystem. Загрузка не является проблемой, возникают проблемы с выяснением, как начать загрузку для файла — это то, что я пытался

Storage::disk('rackspace');
return response()->download('file-library/' . $file->filename);

В результате файл не может быть найден. Добавляет Storage::disk() достаточно для того, чтобы Laravel смотрел в этом месте, а не локально? Каков наилучший способ сделать это?

6

Решение

Фрэнк здесь от 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.

21

Другие решения

Добавляет Storage::disk() достаточно для того, чтобы Laravel смотрел в этом месте, а не локально?

Нет, это не повлияет response()->download() звонки.

Примерно так должно работать:

return response()->download(Storage::disk('rackspace')->get('file-library/' . $file->filename));
-3

По вопросам рекламы [email protected]