使用 S3 预签名上传上传电影文件 URL
Uploading movie file using S3 Presigned Upload URL
我可以使用预签名上传 url 成功上传扩展名为 .png (image/png) 的文件。但是,当我尝试以同样的方式上传扩展名为 .mov 的视频文件时,我从 Amazon S3 收到了 403。我试过使用 contentType movie/mov、video/quicktime,但它们都不起作用。当我将文件名更改为 .png 和 image/png 时,电影文件已正确上传。我只需要更改扩展名以供查看...有谁知道是否有支持 S3 预签名文件上传的文件类型列表?我似乎找不到任何细节谷歌搜索...
我的 s3 存储桶策略:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mytempbucket/*"
}
]
}
编辑:
这就是我生成预签名的方式url:
final GeneratePresignedUrlRequest generatePresignedUrlRequest =
new GeneratePresignedUrlRequest(s3BucketName, objectKey);
generatePresignedUrlRequest.setMethod(HttpMethod.PUT);
generatePresignedUrlRequest.setExpiration(expirationDate.toDate());
generatePresignedUrlRequest.setContentType(contentType);
所以我将 contentType 字符串传递到我的服务器以生成预签名 url。
上传 pre-signed URL 的签名由多个参数构建,其中之一是 Content-Type
header.
没有 "list" 受支持的类型——但是无论您在生成带符号的 URL 时提供什么 Content-Type
,都必须与您在PUT
请求的实际请求 headers。
由于您没有显示任何代码或提及有关如何生成 pre-signed URL 或进行上传的任何细节,因此很难具体推测 你做错了什么,但是如果 Content-Type
签名和实际上传不匹配,那肯定不行。
如果您阅读错误响应的响应 body,通常会有一段告诉您 "string to sign" 应该是什么,具体取决于失败请求的实际属性。无论在何种程度上这与您用于生成签名的内容不匹配,这就是您的错误。
我可以使用预签名上传 url 成功上传扩展名为 .png (image/png) 的文件。但是,当我尝试以同样的方式上传扩展名为 .mov 的视频文件时,我从 Amazon S3 收到了 403。我试过使用 contentType movie/mov、video/quicktime,但它们都不起作用。当我将文件名更改为 .png 和 image/png 时,电影文件已正确上传。我只需要更改扩展名以供查看...有谁知道是否有支持 S3 预签名文件上传的文件类型列表?我似乎找不到任何细节谷歌搜索...
我的 s3 存储桶策略:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mytempbucket/*"
}
]
}
编辑: 这就是我生成预签名的方式url:
final GeneratePresignedUrlRequest generatePresignedUrlRequest =
new GeneratePresignedUrlRequest(s3BucketName, objectKey);
generatePresignedUrlRequest.setMethod(HttpMethod.PUT);
generatePresignedUrlRequest.setExpiration(expirationDate.toDate());
generatePresignedUrlRequest.setContentType(contentType);
所以我将 contentType 字符串传递到我的服务器以生成预签名 url。
上传 pre-signed URL 的签名由多个参数构建,其中之一是 Content-Type
header.
没有 "list" 受支持的类型——但是无论您在生成带符号的 URL 时提供什么 Content-Type
,都必须与您在PUT
请求的实际请求 headers。
由于您没有显示任何代码或提及有关如何生成 pre-signed URL 或进行上传的任何细节,因此很难具体推测 你做错了什么,但是如果 Content-Type
签名和实际上传不匹配,那肯定不行。
如果您阅读错误响应的响应 body,通常会有一段告诉您 "string to sign" 应该是什么,具体取决于失败请求的实际属性。无论在何种程度上这与您用于生成签名的内容不匹配,这就是您的错误。