我正在使用ng文件上传将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", ""]
此外,S3上Bucket权限下的CORS配置是
<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的大小,并将其存储在一个单独的bucket中。即使这部分工作正常,但我无法读取Lambda函数中的自定义元数据(x-amz-meta-hello)值。我需要这个值来为上传的文件分配一个单独的文件夹。
读取Lambda函数中的自定义元数据
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文件上传版本12.2.9,OSX 10.10.5上的Google Chrome版本53.0.2785.113)
删除元数据:{…}构造,因为您正在构建一个HTML表单,它有一个平坦的键空间。在其他地方,您可能会看到经过特殊处理的元数据,其中类似元数据:{“hello”:“world”}的内容神奇地变成了x-amz-meta-hello:world
,但这在这里不适用。相反,元数据需要从x-amz-meta开始,因为我们正在发出一个POST请求,所以它是在表单数据中提供的,而不是作为头。
因为文件数据需要是最后一个表单元素,所以将元数据键放在文件信息之上,例如:
...
"Content-Type": "image/jpeg",
"x-amz-meta-hello": "Custom Metadata Value",
filename: file.name,
...
您的策略条件必须使用$$引用元数据名称才能工作(
[“start with”、“$x-amz-meta-hello”、”“]
)。请注意,需要具有策略才能接受字段,但此特定条件并不约束字段包含特定值。
还要注意<代码>
我使用这个网络服务上传一个文件使用泽西 //省省吧 //将上传的文件保存到新位置 当我执行我的代码我得到一个405错误!对这个问题有什么建议吗?
我有一个ASP。NET文件上载控件,当您单击上载按钮选择要上载的文件时,该控件将打开一个窗口。但问题是,网络驱动程序无法识别窗口,因此无法选择要上载的文件。 我在stackoverflow中找到了许多使用sendkey输入文件路径的解决方案。我认为当你有html文件上传控制时,这是有效的。在我的情况下,我有ASP。NET文件上传控件,它没有文本框,我可以在其中使用sendkey输入文件路径。 我该
springboot接收前端上传到后端的文件时,在controller层内大多数使用的是MultipartFile进行接收的,当使用file进行接收时会报错 有大佬知道为啥不能用file接收文件吗?
我上传一个文件到AmazonS3有问题。我开发了一个Grails RESTful服务,它使用AWS Java SDK生成预签名URL。当客户端上传一个文件时,它首先检索一个预签名的URL,然后使用这个将文件直接上传到我的S3 bucket。所以我有一个Grails服务,它创建了一个预签名的URL,如下所示...
我尝试将meta_query作为数组的数组传递,每个数组包含3个键-值对,用于key、value和compare,就像在wp_query中一样。我还尝试将meta添加为,这是实际字段的名称,只有没有'meta'前缀的名称本身,以及其他一些变体。但是这些方法都不起作用。有人能告诉我这个‘自定义参数支持’是不是只指元字段以外的自定义参数,还是我做错了什么?