Laravel 5 Flysystem - 从远程磁盘下载文件

Nig*_*ICU 8 php laravel laravel-5 flysystem

我使用Flysystem在Rackspace上存储站点的文件.上传没有问题,无法弄清楚如何开始下载文件 - 这就是我尝试过的

Storage::disk('rackspace');
return response()->download('file-library/' . $file->filename);
Run Code Online (Sandbox Code Playgroud)

结果是找不到该文件.是否Storage::disk()足以让Laravel看到这个位置而不是本地?完成此任务的最佳方法是什么?

Fra*_*nge 24

弗兰克来自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) . "\"",
]);
Run Code Online (Sandbox Code Playgroud)

$fsLeague\Flysystem\Filesystem实例.我相信有一种方法可以在Laravel提供的文件系统类中检索这个实例.


cee*_*yoz -4

添加Storage::disk()足以让 Laravel 在这个位置而不是本地查找吗?

不,这不会影响response()->download()通话。

像这样的东西应该有效:

return response()->download(Storage::disk('rackspace')->get('file-library/' . $file->filename));
Run Code Online (Sandbox Code Playgroud)