I am trying to build a file management system in Laravel based on league/flysystem: https://github.com/thephpleague/flysystem

我正在使用S3适配器,我可以使用以下方式保存上传的文件:

$filesystem->write('filename.txt', 'contents');

Now I am stuck on generating the download file URL when using the S3 adapter.

文件被正确地保存在S3存储桶中,我有权限访问它们,我只是不知道如何通过league/flysystem包访问S3 getObjectUrl方法.

I have tried:

$contents = $filesystem->read('filename.txt');

but that returns the content of the file.

$contents = $filemanager->listContents();

or

$paths = $filemanager->listPaths();

but they give me the relative paths to my files.

我需要的是像"ht.//[s3-region].amazonaws.com/[bucket]/[dir]/[file]."这样的东西

推荐答案

I'm not sure what the correct way of doing this is with Flysystem, but the underlying S3Client object has a method for doing that. You could do $filesystem->getAdapter()->getClient()->getObjectUrl($bucket, $key);. Of course, building the URL is as trivial as you described, so you don't really need a special method to do it.

Laravel相关问答推荐

如何判断用户是否已登录Laravel

如何使用 Laravel 查询生成器在 WHERE 条件周围添加括号

为什么 Laravel 5 会自动更新我的日期字段?

Laravel belongsToMany 关系在两个表上定义本地键

磁盘 [视频] 没有配置的驱动程序

如何在 Eloquent 上设置条件关系

错误:您的要求无法解析为一组可安装的软件包.

在 Laravel 中显示已注册的路由

Http请求多浏览器的烦恼

如何将 Facebook PHP SDK 与 Laravel 5.4 集成?

Laravel assets资源与混合

扩展 Eloquent 的类的构造函数

Laravel Eloquent 查询生成器默认 Where 条件

在 Laravel 5.4 中将文件存储在公共目录和存储中的区别

在 Laravel 中包含 bootstrap 程序

Laravel 分页漂亮的 URL

Laravel 5 默认注册后如何发送邮件?

如何在 Laravel 5 中验证 RESTful API?

如何从 PHPUnit 测试设置运行 Laravel 数据库 seeder 机?

如何从 laravel 5.1 中数据库表的 created_at 属性中 Select 年份和月份?