我們的應用程序託管在Heroku,所以沒有本地文件存儲。rails 3,heroku,aws-s3,只是試圖上傳一個文件到S3,這是一個POST(http/multipart)我們的應用程序
我們正在使用的第三方API沒有存儲它創建的WAV,它將文件(http /多部分)發佈回我們的應用程序。他們提供示例代碼來'簡單'將該文件發送到S3。他們提供的代碼(下面)不能在Rails 3 + Heroku上運行。我懷疑有一些不同的語法來指定我們讀取的輸入文件和臨時文件。 (代碼最初是爲西納特拉我不知道老[:filename]
和[:tempfile]
是對,所以我把他們趕走,並採取了猜測的語法是這樣的使用將它視爲?)
def post_audio_to_s3
puts "*** POST_AUDIO_TO_S3 PARAMS:" + params.inspect
con = AWS::S3::Base.establish_connection!(
:access_key_id => 'MYKEY',
:secret_access_key => 'MYSECRET')
puts "** CON='#{con.inspect}'"
snd = AWS::S3::S3Object.store(params[:filename],
Tempfile.open(params[:filename]).path,
'bb_audios')
puts "** SND='#{snd.inspect}'"
UPDATE:幾乎工程,但創建的長度爲零的文件。我有點不知如何使用Tempfile,但我將require 'tempfile'
添加到控制器類中,並將S3存儲行修改爲上述內容。
Heroku/Tempfile這件事的整個POST文件讓我的腦子冰冷了...任何想法都將不勝感激。首先,我不知道數據來自哪裏......當我檢查參數是否被張貼到應用程序時,我不應該看到除文件名之外的其他東西嗎?
謝謝,但完全沒有解決問題...這是如何使用Heroku上的tempfiles處理上傳。 – jpwynn 2011-02-16 05:55:00