当我尝试将图像上传到S3时出现以下错误:
POST https://bucket-name.s3.amazonaws.com/ 400 (Bad Request)
在我的控制器中,我正在通过:
@s3_direct_post = S3_BUCKET.presigned_post(key: "uploads/#{SecureRandom.uuid}/${filename}", success_action_status: '201', acl: 'public-read')
在我看来,我有:
<%= form_for(@student, html: { class: 'directUpload', data: { 'form-data' => (@s3_direct_post.fields), 'url' => @s3_direct_post.url, 'host' => URI.parse(@s3_direct_post.url).host } }) do |f| %>
初始化/ aws.rb:
Aws.config.update({
region: 'us-east-1',
credentials: Aws::Credentials.new('ABC', 'XYZ'),
})
S3_BUCKET = Aws::S3::Resource.new.bucket('bucket-name')
我在我的存储桶中添加了以下CORS配置:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://localhost:3000</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
我在这里按照教程:https://devcenter.heroku.com/articles/direct-to-s3-image-uploads-in-rails。 “生产桶”和“开发桶”之间有区别吗?
答案 0 :(得分:0)
问题在于该地区。有意思,因为我认为S3桶是全球性的。