我可以成功地上传文件的.png扩展名(图像/png)使用预先签名的上传网址。然而,当我尝试用相同的方式上传视频文件(扩展名为.mov )时,我从亚马逊S3上得到了403。我试过使用contentType电影/mov、视频/快速时间,但它们都不起作用。当我将文件名更改为.png和image/png时,电影文件被正确上传。我只是想换个分机看.是否有人知道S3预签名文件上传是否有受支持的文件类型列表?我似乎找不到任何细节搜索.
我的s3桶策略:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mytempbucket/*"
}
]
}
编辑:我就是这样生成我的预言符的:
final GeneratePresignedUrlRequest generatePresignedUrlRequest =
new GeneratePresignedUrlRequest(s3BucketName, objectKey);
generatePresignedUrlRequest.setMethod(HttpMethod.PUT);
generatePresignedUrlRequest.setExpiration(expirationDate.toDate());
generatePresignedUrlRequest.setContentType(contentType);
因此,我将contentType字符串传递给我的服务器,以生成预先签名的url。
发布于 2015-12-26 11:59:34
用于上传的预签名URL的签名是由多个参数构建的,其中一个参数是Content-Type
头。
没有受支持类型的“列表”--但是无论您在生成签名的Content-Type
时提供什么,都必须与在实际的PUT
请求中提供的请求头相同。
由于您没有显示任何代码,也没有提到任何关于您如何生成预签名的URL或如何进行上载的详细说明,所以很难具体地推测您做错了什么,但是如果签名和实际上传之间不匹配,它肯定无法工作。
如果您读取错误响应的响应主体,通常会有一个部分根据失败请求的实际属性告诉您“要签名的字符串”应该是什么。无论这在多大程度上与您用来生成签名的内容不匹配,这就是您的错误所在。
https://stackoverflow.com/questions/34468526
复制相似问题