我正在为视频共享网站编码。我使用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());
}
这是一个2部分问题。首先,我如何在这里指定标签?我找不到任何PHP示例。接下来,让我们说有人上传视频并在其上添加标记。 S3标签是键/值对。我应该为钥匙设置什么?我想为每个视频使用像[tag1,tag2,tag3]这样的东西,以及那些作为标记字符串的值。这是S3标签doc:https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html
答案 0 :(得分:1)
要设置对象标记,只需将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
,那么它会很快弄乱。