我正在编写一个视频共享网站的代码。我正在使用 S3 来存储和提供视频。我已经在 MySQL 数据库中为视频编写了标签,但我发现 S3 支持上传文件上的设置标签。这是我用来上传文件的代码:
try {
//Create a S3Client
$s3Client = new S3Client([
'region' => 'us-east-1',
'version' => 'latest',
'credentials' => [
'key' => '',
'secret' => ''
]
]);
$result = $s3Client->putObject([
'Bucket' => $bucket,
'Key' => $assetFilename,
'SourceFile' => $fileTmpPath,
'Metadata' => array(
'title' => $requestAr['title'],
'description' => $requestAr['description']
)
]);
$s3Client->waitUntil('ObjectExists', array(
'Bucket' => $bucket,
'Key' => $assetFilename
));
} catch (S3Exception $e) {
returnError($e->getMessage());
}
这是一个由两部分组成的问题。首先,我如何在这里指定标签?我找不到任何 PHP 示例。接下来,假设有人上传视频并在其上添加了标签。 S3 标签是键/值对。我应该为按键设置什么?我正在考虑为每个视频使用 [tag1, tag2, tag3] 之类的东西,这些值就是标签字符串。这是 S3 标签文档:https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html
最佳答案
要设置对象标签,只需将 Tagging
元素传递给 putObject()
参数即可。在你的情况下,它会是这样的:
$result = $s3Client->putObject([
'Bucket' => $bucket,
'Key' => $assetFilename,
'SourceFile' => $fileTmpPath,
'Tagging' => 'category=tag1', // your tag here!
'Metadata' => array(
'title' => $requestAr['title'],
'description' => $requestAr['description']
)
]);
请注意,该标记是一个简单的 key=value
字符串。作为“提前思考”的措施,我会将标签设置为 category=tagValue
,这样您就可以对它们进行分类并最终添加更多标签类别。如果你这样做tag1=true
,那么它很快就会变得困惑。
关于PHP Amazon S3 上传和标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46248999/