gpt4 book ai didi

php - 使用 Laravel 5.0 Storage facade 将元数据、 header (Expires、CacheControl)添加到上传到 Amazon S3 的文件

转载 作者:IT王子 更新时间:2023-10-28 23:49:24 26 4
gpt4 key购买 nike

我正在尝试了解如何将元数据或 header (Expires、CacheControl 等)添加到使用 Laravel 5.0 存储门面上传的文件中。我已将此处的页面用作引用。

http://laravel.com/docs/5.0/filesystem

以下代码可以正常工作:

Storage::disk('s3')->put('/test.txt', 'test');

经过挖掘,我还发现有一个“可见性”参数将 ACL 设置为“公共(public)读取”,因此以下内容也可以正常工作。

Storage::disk('s3')->put('/test.txt', 'test', 'public');

但我希望能够为文件的标题设置一些其他值。我尝试了以下方法:

Storage::disk('s3')->put('/index4.txt', 'test', 'public', array('Expires'=>'Expires, Fri, 30 Oct 1998 14:19:41 GMT'));

哪个不行,我也试过了:

Storage::disk('s3')->put('/index4.txt', 'test', array('ACL'=>'public-read'));

但这会产生一个错误,即“可见性”参数无法从字符串转换为数组。我检查了 AwsS3Adapter 的来源,似乎有选项代码,但我似乎看不到如何正确传递它们。我认为它需要以下内容:

protected static $metaOptions = [
'CacheControl',
'Expires',
'StorageClass',
'ServerSideEncryption',
'Metadata',
'ACL',
'ContentType',
'ContentDisposition',
'ContentLanguage',
'ContentEncoding',
];

任何有关如何完成此操作的帮助将不胜感激。

最佳答案

首先,您需要调用 getDriver 以便发送一组选项。然后您需要将选项作为数组发送。

所以对于你的例子:

Storage::disk('s3')->getDriver()->put('/index4.txt', 'test', [ 'visibility' => 'public', 'Expires' => 'Expires, Fri, 30 Oct 1998 14:19:41 GMT']);

请注意,如果您正在设置 Cache-Control,它必须作为 CacheControl 传递。对于具有非字母数字字符的其他键,这可能也是正确的。

关于php - 使用 Laravel 5.0 Storage facade 将元数据、 header (Expires、CacheControl)添加到上传到 Amazon S3 的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28989605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com