PHP Amazon S3 上传和标签

标签 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());
            }

这是一个由两部分组成的问题。首先,我如何在这里指定标签?我找不到任何 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/

相关文章:

jquery 获取当前 child 的数量

PHP htmlentities 只允许 <b> 和 <i>

html - 如何添加法国商标符号 (MC)?

php - 通过 PHP 插入 MySQL 时日期时间格式无效

ruby-on-rails - asset_sync gem 错误:rake assets:precompile 失败:与服务器证书不匹配(OpenSSL::SSL::SSLError)

amazon-web-services - 使用 go aws sdk 将 460mb 文件从 S3 下载到 AWS lambda 时内存不足

testing - CircleCI 与 AWS : RequestTimeTooSkewed error

php - GET 参数意外被 %27 包围?

php - PHP 混淆有必要吗?

php - 读取通过 $_GET 提供的文件