У меня есть скрепка (с S3), работающая в моем приложении, для аудиофайлов. Определение модели связывает S3 с скрепкой.Paperclip без вида
# attachments
has_attached_file :audio, storage: :s3, s3_credentials: Proc.new{|a| a.instance.s3_credentials}
validates_attachment_content_type :audio, :content_type => [ 'audio/mpeg', 'audio/x-mpeg', 'audio/mp3', 'audio/x-mp3', 'audio/mpeg3', 'audio/x-mpeg3', 'audio/mpg', 'audio/x-mpg', 'audio/x-mpegaudio' ]
я могу загрузить файлы через рельсы simple_form, используя этот код:
<%= simple_form_for(@sentence) do |f| %>
<%= f.error_notification %>
.
<%= f.input :audio, as: :file %>
.
<% end %>
Я хотел бы создать аудио с помощью фонового процесса (Resque). Этот код извлекает аудиопоток из веб-API и пытается сохранить его в существующем экземпляре модели. Это не работает.
sentences.each do |sentence|
sentence.audio = get_audio(sentence.sentence)
sentence.save
end
Paperclip, похоже, не знает, как обращаться с аудиопотоком.
failed: #<Paperclip::AdapterRegistry::NoHandlerError: No handler found for "\xFF\xF3\xC8\xC4\x00\x00\x00\x03H\x00\x00\x00\x00LAME3.99.5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
** ПРОГРЕСС **
Я сделал некоторый прогресс: написал аудиопоток в TempFile ... но теперь Paperclip жалуется кодирующая
def get_audio_tempfile(target)
audio = translator.speak "#{target}", :language => "#{@language_cd}", :format => 'audio/mp3', :options => 'MaxQuality'
tempfile = Tempfile.new("target_temp.mp3")
tempfile.binmode
tempfile.write(audio)
tempfile.close
tempfile.open
tempfile
end
Ошибка:
[paperclip] Content Type Spoof: Filename target_temp.mp320160226-32064- r391y9 (audio/mpeg from Headers, [] from Extension), content type discovered from file command: audio/mpeg. See documentation to allow this combination.