首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel -IBM对象存储

Laravel -IBM对象存储
EN

Stack Overflow用户
提问于 2018-06-24 16:55:58
回答 1查看 585关注 0票数 0

我正在尝试设置我的Laravel应用程序来使用来自IBM的对象存储服务。我想要的是上传一个文件,并获得一个静态的公共URL前端文件,但我目前有一些困难后,访问文件上传。

已安装的软件包:

代码语言:javascript
复制
league/flysystem-aws-s3-v3

为bluemix存储创建了一个新的服务提供商,本文建议如下:

How to connect Laravel 5 app with object-storage bucket?

在我的控制器中,我使用以下调用上传该文件:

代码语言:javascript
复制
Storage::disk('object-storage')->put($full_name,$file);

上传工作正常,我可以在桶中看到文件。当我试图访问该文件时,会出现问题。

根据IBM文档,我需要将ACL设置为public-read,以便能够公开访问该文件。经过一些研究,我修改了文件系统调用:

代码语言:javascript
复制
    Storage::extend('object-storage', function($app, $config) {
        $client = S3Client::factory([
            'credentials' => [
                'key'    => $config['key'],
                'secret' => $config['secret'],
            ],
            'region' => $config['region'],
            'version' => $config['version'],
            'endpoint' => $config['endpoint'],
        ]);
        $adapter = new AwsS3Adapter($client, $config['bucket_name']);
        return new Filesystem($adapter,['ACL' => 'public-read']);
    });

我还尝试在控制器中设置存储调用的可见性:

代码语言:javascript
复制
Storage::disk('object-storage')->setVisibility($full_name,'public-read');

然后,我尝试使用getVisibility访问该文件以读取可见性:

代码语言:javascript
复制
Storage::disk('object-storage')->getVisibility($full_name);

这使我在getObjectAcl上出现了一个404错误,并给出了消息:

指定的密钥不存在于https://bucket-name.s3.eu-gb.objectstorage.softlayer.net/sApQNtdUvJYg7YWsL8IbCe26U6EK8v.png?acl上。

如果我试图复制URL地址并将其粘贴到浏览器中,则会导致访问拒绝错误。

调用中使用的身份验证凭据设置为Manager。

是否有人有解决这个问题的办法,或者是否有使用Laravel上传和读取文件的指南?

EN

回答 1

Stack Overflow用户

发布于 2018-11-12 15:36:07

我这么做了。

代码语言:javascript
复制
$response = $filesystem->put($new_name, file_get_contents($file), ['ACL' => 'public-read']  );

尝尝这个

Storage::disk('object-storage')->put($full_name,$file,'ACL‘=> 'public-read');

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51012063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档