我按照給定的說明使用了s3_direct_upload Gem。當我提交帶有附加圖像的上傳表單時,會創建一個新的「上傳」項目,但不會將圖像發送到S3(或返回顯示)。AWS S3使用s3_direct_upload Gem似乎在處理但沒有任何內容上傳到我的s3存儲桶
我有一個user.rb模型通過設計,但我用於圖像的模型是upload.rb。
以下是我在提交圖像表單時在開發模式下獲得的日誌。您可以看到,除了創建日期和ID(其他所有內容均爲零)之外,沒有任何內容添加到新的「上傳」項目中。附註 - 我應該在這裏看到我的桶名在這個日誌(我不)?
附加信息:在我的S3控制檯中,我移除了桶。我仍然在下面得到相同的輸出。那麼,它似乎甚至不會將信息發送給s3?任何想法可能導致什麼?
開始POST 「/上傳」 爲127.0.0.1在2013年5月12日19時10分52秒-0400 處理由UploadsController#創建作爲/參數: { 「UTF8」=>「√ 」, 「鍵」=> 「上傳/ 1368400251964-ol9ja4ijq0110pb9-bf206 97a98bbff7c58a83d7bfaa84800/$ {文件名}」,以 「acl」=> 「公開閱讀」, 「AWSAccessKeyId」 => 「AKIAI2EXMFCUTILIGG」, 「政策」= >「eyJleHBpcmF0aW9uIjoiMjAxMy0wNS0xM1QwOToxMDo 0N1oiLCJjb25kaXRpb25zIjpbWyJzdGFydHMtd2l0aCIsIiR1dGY4IiwiIl0sWyJzdGFydHMtd2l0aCI sIiRrZXkiLCJ1cGxvYWRzLyJdLFsic3RhcnRzLXdpdGgiLCIkeC1yZXF1ZXN0ZWQtd2l0aCIsIiJdLFs iY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsNTI0Mjg4MDAwXSxbInN0YXJ0cy13aXRoIiwiJGNvbnRlbnQ tdHlwZSIsIiJdLHsiYnVja2V0IjoibGl2ZXBlcmNoIn0seyJhY2wiOiJwdWJsaWMtcmVhZCJ9LHsic3V jY2Vzc19hY3Rpb25fc3RhdHVzIjoiMjAxIn1dfQ == 「 」簽名「=> 」f9R5QeLx4nllEKug805CV1 OJTu0 =「, 」success_action_status「=> 」201「, 」X-請求-隨着「=> 」XHR「, 」 內容典型值e「=>」image/jpeg「, 」file「=>#>} ←[1m←[36mUser Load(1.0ms)←[0m←[1mSELECT」users「。* FROM」users「 WHERE」users 「。」id「= 1 LIMIT 1←[0m←[1m←[35m(0.0ms)←[0m BEGIN
←[1m←[36mSQL(81.0ms)←[0m←[1mINSERT INTO」uploads「 created_at「, 」image_url「,」name「,」product_id「,」updated_at「)VALUES($ 1,$ 2,$ 3, $ 4,$ 5)RETURNING「id」←[0m [[「created_at」,Sun,2013年5月12日23:10:52 UTC +00:00],[「image_url」,無],[「名稱」 ],[「product_id」,nil], [「updated_at」,Sun,2013年5月12日23:10:52 UTC +00:00]]←[1m←[35m (18.0ms)←[0m COMMIT渲染上傳/_upload.html.erb(1.0ms)
渲染uploads/create.js.erb(4.0ms)在127ms內完成200 OK (查看:22.0ms | ActiveRecord:101.0ms)
這裏是mu upload.rb模型。
class Upload < ActiveRecord::Base
attr_accessible :image_url, :name, :product_id
before_create :default_name
def default_name
self.name ||= File.basename(image_url, '.*').titleize if image_url
end
end
這是觸發發送到s3的圖像表單代碼。
<%= s3_uploader_form callback_url: uploads_url, callback_param: upload[image_url]", id: "myS3Uploader" do %>
<%= file_field_tag :file, multiple: true %>
<% end %>
這是gem需要的初始化文件,它包含我的s3信息。我編輯了鑰匙和水桶名稱。
S3DirectUpload.config do |c|
c.access_key_id = "AWS_KEY" # your access key id
c.secret_access_key = "AWS_SECRET_KEY" # your secret access key
c.bucket = "AWS_BUCKET_NAME" # your bucket name
c.region = "" # region prefix of your bucket url (optional), eg. "s3-eu-west-1"
c.url = "" # S3 API endpoint (optional), eg. "https://#{c.bucket}.s3.amazonaws.com/"
end
而且,這裏是create.js。erb文件爲模型
<% if @upload.new_record? %>
alert("Failed to upload: <%= j @upload.errors.full_messages.join(', ').html_safe %>");
<% else %>
$("#uploads").append("<%= j render(@upload) %>");
<% end %>
我是一個新的鐵軌,這一直在推動我堅果。我感謝任何幫助!