我使用Flysystem在Rackspace上存储站点的文件。上传没有问题,无法弄清楚如何开始下载文件 - 这就是我试过的
Storage::disk('rackspace');
return response()->download('file-library/' . $file->filename);
结果是找不到该文件。添加Storage::disk()
是否足以让Laravel看到这个位置而不是本地?实现这一目标的最佳方法是什么?
答案 0 :(得分:23)
弗兰克来自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提供的文件系统类中检索这个实例。
答案 1 :(得分:-3)
添加
Storage::disk()
是否足以让Laravel看到这个位置而不是本地?
不,这不会影响response()->download()
来电。
这样的事情应该有效:
return response()->download(Storage::disk('rackspace')->get('file-library/' . $file->filename));