Я использую ng-file-upload для загрузки файла JPG в свой ведро S3.
file.upload = Upload.upload({
url: "https://<my-bucket-name>.s3.amazonaws.com/",
method: "POST",
data: {
key: "custom-filename.jpg",
AWSAccessKeyId: "<AWSAccessKeyId>",
acl: "public-read",
policy: <policy>,
signature: <signature>,
"Content-Type": "image/jpeg",
filename: file.name,
file: file,
Metadata: {
"x-amz-meta-hello": "Custom Metadata Value"
}
}
});
Я также пробовал следующее (в приведенном выше коде)
Metadata: {
hello: "Custom Metadata Value"
}
& просто
"x-amz-meta-hello": "Custom Metadata Value"
Я включил пользовательские метаданные в свой файл политики как
["starts-with", "x-amz-meta-hello", ""]
Кроме того, конфигурация CORS в разделе «Разрешения сегмента» на S3
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<ExposeHeader>x-amz-meta-hello</ExposeHeader>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
Приведенный выше код и настройки работают, файл JPG успешно загружен, но почему-то не устанавливается значение пользовательских метаданных.
При успешной загрузке я вызываю функцию Lambda, чтобы изменить размер JPG и сохранить его в отдельном сегменте. Даже эта часть работает, но я не могу прочитать значение пользовательских метаданных (x-amz-meta-hello) в моей лямбда-функции. Мне нужно это значение, чтобы назначить отдельную папку для загруженного файла.
Чтобы прочитать пользовательские метаданные в моей лямбда-функции
var s3 = new AWS.S3();
s3.headObject({
Bucket: <BucketName>,
Key: <S3ObjectKey>
}, function(err, data) {
if (err) {
console.log(err);
}
else
{
console.log(data);
}
});
Не уверен, что мне здесь не хватает ... Пожалуйста, посоветуйте.
Спасибо. (AngularJS версии 1.5.0, ng-file-upload версии 12.2.9, Google Chrome версии 53.0.2785.113 на OSX 10.10.5)
Metadata: {
и}
и поместите ключ метаданных над информацией о файле:... "Content-Type": "image/jpeg", "x-amz-meta-hello": "Custom Metadata Value", filename: file.name, ...
- person Michael - sqlbot   schedule 15.09.2016