ale*_*ane 22 php amazon-s3 laravel-5 flysystem
我试图找出如何将元数据或标题(Expires,CacheControl等)添加到使用Laravel 5.0存储外观上传的文件中.我在这里使用这个页面作为参考.
http://laravel.com/docs/5.0/filesystem
以下代码正常工作:
Storage::disk('s3')->put('/test.txt', 'test');
Run Code Online (Sandbox Code Playgroud)
在挖掘之后我还发现有一个'visibility'参数可以将ACL设置为'public-read',因此以下内容也可以正常工作.
Storage::disk('s3')->put('/test.txt', 'test', 'public');
Run Code Online (Sandbox Code Playgroud)
但我希望能够为文件的标题设置一些其他值.我尝试过以下方法:
Storage::disk('s3')->put('/index4.txt', 'test', 'public', array('Expires'=>'Expires, Fri, 30 Oct 1998 14:19:41 GMT'));
Run Code Online (Sandbox Code Playgroud)
哪个不起作用,我也尝试过:
Storage::disk('s3')->put('/index4.txt', 'test', array('ACL'=>'public-read'));
Run Code Online (Sandbox Code Playgroud)
但是这会产生一个错误,其中'visibility'参数无法从字符串转换为数组.我检查了AwsS3Adapter的来源,似乎有选项代码,但我似乎无法看到如何正确传递它们.我认为它需要以下内容:
protected static $metaOptions = [
'CacheControl',
'Expires',
'StorageClass',
'ServerSideEncryption',
'Metadata',
'ACL',
'ContentType',
'ContentDisposition',
'ContentLanguage',
'ContentEncoding',
];
Run Code Online (Sandbox Code Playgroud)
任何有关如何实现这一点的帮助将不胜感激.
Mat*_*ald 26
首先,您需要调用getDriver,以便发送一系列选项.然后你需要将选项作为数组发送.
所以对于你的例子:
Storage::disk('s3') -> getDriver() -> put('/index4.txt', 'test', [ 'visibility' => 'public', 'Expires' => 'Expires, Fri, 30 Oct 1998 14:19:41 GMT']);
Run Code Online (Sandbox Code Playgroud)
请注意,如果您正在设置"Cache-Control",则必须将其作为"CacheControl"传递.对于具有非alphanumierc字符的其他键,这可能是正确的.
Par*_*ras 19
如果您想要包含标题的全局默认值,则可以在Laravel 5.4中使用.config/filesystems.php
像这样更改文件:
s3' => [
'driver' => 's3',
'key' => env('AWS_KEY'),
'secret' => env('AWS_SECRET'),
'region' => env('AWS_REGION'),
'bucket' => env('AWS_BUCKET'),
'options' => ['CacheControl' => 'max-age=315360000, no-transform, public',
'ContentEncoding' => 'gzip']
],
Run Code Online (Sandbox Code Playgroud)
在尝试上述答案并且无法添加客户用户元数据后,事实证明在挖掘 SDK 代码后,它比我想象的要容易一些(假设$path
是图像文件的路径)。我似乎也不需要调用该getDriver()
方法,不太确定这与当前版本的 AWS SDK 是否有任何区别。
Storage::put(
'image.jpg',
file_get_contents($path),
[
'visibility' => 'public',
'Metadata' => [
'thumb' => '320-180',
],
]
);
Run Code Online (Sandbox Code Playgroud)
所以现在如果您在 S3 中查看新上传的文件,您将看到自定义元数据:
希望这可以帮助某人。
归档时间: |
|
查看次数: |
8917 次 |
最近记录: |