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

标签 php laravel laravel-5 flysystem

我正在使用 Flysystem 为 Rackspace 上的站点存储文件。上传没问题,弄清楚如何开始下载文件时遇到问题 - 这是我尝试过的

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

结果是找不到文件。添加 Storage::disk() 是否足以让 Laravel 在这个位置而不是在本地查看?实现此目标的最佳方法是什么?

最佳答案

来自 Flysystem 的 Frank。

执行此操作的首选方法是将 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) . "\"",
]);

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

关于php - Laravel 5 Flysystem - 从远程磁盘下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29266974/

相关文章:

php - 如何找到mysql表中一行的位置?

php - Laravel 5. 具有多个条件的 FirstorNew

php - 使用 Laravel 框架托管 Unity WebGL 游戏

php - Laravel 5 每个结果行的子查询

php - 用户 '' @'10.246.64.24' 的访问被拒绝(使用密码 : NO)

php - 如何将此 PHP 正则表达式转换为 Javascript?

laravel - 如何为长时间运行的作业设置自定义 retry_after |拉维

php - Laravel 事件监听器未定义的属性错误与 ShouldQueue

php - Laravel 5 - 获取包配置

php mysql分组结果