首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用content_type时为CarrierWave设置CarrierWave和recorder.js

如何在使用content_type时为CarrierWave设置CarrierWave和recorder.js
EN

Stack Overflow用户
提问于 2015-12-31 17:21:29
回答 1查看 526关注 0票数 0

我正在使用recorder.jsCarrierWave实现对用户语音的记录。我可以通过这段代码保存声音,但仍然存在一些问题。

代码语言:javascript
复制
function saveSound() {
    recorder && recorder.exportWAV(function (blob) {
        var url = URL.createObjectURL(blob);

        var formData = new FormData();
        formData.append('voice[sound]', blob, "foo.wav");
        formData.append('voice[phrase_id]', $('#phrase').data('phrase-id'));
        $.ajax({
            type: "POST",
            url: "/voices",
            processData: false,
            contentType: false,
            data: formData
        });
    });
}

app/型号/voice.rb

代码语言:javascript
复制
class Voice < ActiveRecord::Base
  belongs_to :phrase
  belongs_to :user
  mount_uploader :sound, SoundUploader
end

这是recorder.js创建的声音。

代码语言:javascript
复制
Voice.last.sound
=> #<SoundUploader:0x007fb5dda13818
 @file=#<CarrierWave::SanitizedFile:0x007fb5dda0bb18 @content_type=nil, @file="/Users/ironsand/dev/nativephrase/public/uploads/voice/sound/15/blob", @original_filename=nil>,
 @model=
  #<Voice:0x007fb5dc549e00
   id: 15,
   phrase_id: 24,
   user_id: nil,
   type: nil,
   gender: nil,
   created_at: Thu, 31 Dec 2015 17:11:48 UTC +00:00,
   updated_at: Thu, 31 Dec 2015 17:11:48 UTC +00:00,
   sound: "blob">,
 @mounted_as=:sound,
 @storage=#<CarrierWave::Storage::File:0x007fb5dda12d78 @uploader=#<SoundUploader:0x007fb5dda13818 ...>>,
 @versions={}>

因此,我在formData foo.wav中设置的名称被忽略了。如果我在ajax请求中设置了content-type,我就无法上传声音。

如何设置@content_type@original_filename的CarrierWave模型?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-31 18:56:52

这对我有用。

代码语言:javascript
复制
class MyUploader < CarrierWave::Uploader::Base

  include CarrierWave::RMagick
  include CarrierWave::MimeTypes

  process :set_content_type
  process :save_content_type

  def save_content_type
    model.content_type = file.content_type if file.content_type
  end

  def filename
    "#{model.type}_#{model.user_id}.xls" if original_filename
  end

end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34549594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档