我正在尝试设置我的Laravel应用程序来使用来自IBM的对象存储服务。我想要的是上传一个文件,并获得一个静态的公共URL前端文件,但我目前有一些困难后,访问文件上传。
已安装的软件包:
league/flysystem-aws-s3-v3为bluemix存储创建了一个新的服务提供商,本文建议如下:
在我的控制器中,我使用以下调用上传该文件:
Storage::disk('object-storage')->put($full_name,$file);上传工作正常,我可以在桶中看到文件。当我试图访问该文件时,会出现问题。
根据IBM文档,我需要将ACL设置为public-read,以便能够公开访问该文件。经过一些研究,我修改了文件系统调用:
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']);
});我还尝试在控制器中设置存储调用的可见性:
Storage::disk('object-storage')->setVisibility($full_name,'public-read');然后,我尝试使用getVisibility访问该文件以读取可见性:
Storage::disk('object-storage')->getVisibility($full_name);这使我在getObjectAcl上出现了一个404错误,并给出了消息:
指定的密钥不存在于https://bucket-name.s3.eu-gb.objectstorage.softlayer.net/sApQNtdUvJYg7YWsL8IbCe26U6EK8v.png?acl上。
如果我试图复制URL地址并将其粘贴到浏览器中,则会导致访问拒绝错误。
调用中使用的身份验证凭据设置为Manager。
是否有人有解决这个问题的办法,或者是否有使用Laravel上传和读取文件的指南?
发布于 2018-11-12 15:36:07
我这么做了。
$response = $filesystem->put($new_name, file_get_contents($file), ['ACL' => 'public-read'] );尝尝这个
Storage::disk('object-storage')->put($full_name,$file,'ACL‘=> 'public-read');
https://stackoverflow.com/questions/51012063
复制相似问题