PHP Amazon S3上传和标签

时间:2017-09-16 00:38:45

标签: php amazon-s3 tags

我正在为视频共享网站编码。我使用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

1 个答案:

答案 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,那么它会很快弄乱。