我的亚马逊S3存储桶中的对象都是application/octet-stream
内容类型。其中一些对象是PDF,有时是JPG
、GIF
、PNG
等图像。如何将这些对象的内容类型更改为images/jpeg
、application/pdf
等?
是否可以通过Amazon控制台批量完成?
我可以使用命令行吗?
或者也许是通过PHP?
发布于 2017-10-25 20:29:19
这就是为*.png类型的所有文件设置Content-Type
的方法
aws s3 cp \
s3://BUCKET-NAME/ \
s3://BUCKET-NAME/ \
--exclude '*' \
--include '*.png' \
--no-guess-mime-type \
--content-type="image/png" \
--metadata-directive="REPLACE" \
--recursive
发布于 2016-12-07 20:46:08
您可以使用AWS sdk (php或其他),我将使用CLI演示它是如何工作的。要更改S3给定对象的内容类型,您需要复制此对象,并使用REPLACE
标记更新元数据信息,以便它复制到自身,您可以使用http://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html来实现这一点
aws s3api copy-object --bucket <bucket_name> \
--content-type "images/jpeg" \
--copy-source <bucket_name>/path/to/images.jpeg \
--key path/to/images.jpeg \
--metadata-directive "REPLACE"
发布于 2019-09-21 23:46:11
aws s3 ls \
s3://<YOUR_BUCKET> --recursive |
awk '{print substr($0, index($0, $4))}' |
grep <FILE_EXTENSTION> |
while read -r line; do \
aws s3api copy-object \
--bucket <YOUR_BUCKET> \
--acl "<ACL_POLICY_IF_NEEDED>" \
--content-type "<REQUIRED_CONTENT_TYPE>" \
--copy-source "<YOUR_BUCKET>/$line" \
--key "$line" --metadata-directive "REPLACE"; \
done
这将会起到作用。分解命令:
aws s3 ls s3://<YOUR_BUCKET> --recursive
=>这将列出您的keysgrep <FILE_EXTENSTION>
类型中的所有文件这将删除额外的信息,如日期,只会给您提供content-typewhile read -r line; do aws s3api copy-object --bucket <YOUR_BUCKET> --acl "<ACL_POLICY_IF_NEEDED>" --content-type "<REQUIRED_CONTENT_TYPE>" --copy-source "<YOUR_BUCKET>/$line" --key "$line" --metadata-directive "REPLACE"; done
=>的全部列表这将过滤您要更新其content-typewhile read -r line; do aws s3api copy-object --bucket <YOUR_BUCKET> --acl "<ACL_POLICY_IF_NEEDED>" --content-type "<REQUIRED_CONTENT_TYPE>" --copy-source "<YOUR_BUCKET>/$line" --key "$line" --metadata-directive "REPLACE"; done
=>的扩展名(例如pdf/ => )这将使用您指定的内容类型替换您的存储桶中所有已过滤的文件=>https://stackoverflow.com/questions/41015200
复制相似问题