Наше приложение размещено в Heroku, поэтому нет локального хранилища файлов.
Используемый нами сторонний API не сохраняет созданный им WAV, он помещает файл (http / multi-part)вернуться к нашему приложению.Они предоставляют пример кода, чтобы «просто» отправить этот файл на S3.Код, который они предоставляют (ниже), не работает на Rails 3 + Heroku.Я подозреваю, что есть некоторый другой синтаксис для указания входного файла и временного файла, из которого мы читаем.(Код изначально был для Синатры. Я понятия не имею, для чего были старые [:filename]
и [:tempfile]
, поэтому я удалил их и предположил, что синтаксис был примерно таким же, используя 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}'"
ОБНОВЛЕНИЕ: Почти работает, но файл нулевой длины создан.Я вроде как болтаюсь, не зная, как использовать Tempfile, но я добавил require 'tempfile'
в класс контроллера и изменил строку хранения S3 в соответствии с приведенным выше описанием.
Весь этот файл POST-a-file для Heroku / Tempfile заморозил мой мозг ... любые идеи будут оценены.С одной стороны ... я понятия не имею, откуда берутся ДАННЫЕ ... разве я не вижу что-то, кроме имени файла, когда проверяю параметры, если они ПОСТАВЛЯЮТСЯ в приложение?