将图像上载到S3时出错400

时间:2016-06-28 02:49:47

标签: ruby-on-rails-4 amazon-s3

当我尝试将图像上传到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。 “生产桶”和“开发桶”之间有区别吗?

1 个答案:

答案 0 :(得分:0)

问题在于该地区。有意思,因为我认为S3桶是全球性的。