carrierwave不会在Uploader上保存content_type

时间:2014-01-15 08:38:02

标签: ruby-on-rails ruby carrierwave

我已按照https://github.com/carrierwaveuploader/carrierwave#setting-the-content-type

的说明进行操作

所以我得到了:

require 'carrierwave/processing/mime_types'
class AssetFileUploader < CarrierWave::Uploader::Base
  include CarrierWave::MimeTypes
  process :set_content_type
  ...

但在上传文件后,content_type不会更新。

我有一个AssetInfo模型,在

上安装了上传者AssetFileUploader
:file attribute
class AssetInfo < ActiveRecord::Base
mount_uploader :file, AssetFileUploader
...

参数包含:

... "file"=># @headers="Content-Disposition: form-data; name=\"asset[asset_info_attributes][file]\"; filename=\"img.jpg\"\r\nContent-Type: image/jpeg\r\n"> ...

文件上传后,我在控制台中尝试:

  

AssetInfo.last.file.file   =&GT; &LT; CarrierWave :: SanitizedFile:0x34b1c @ original_filename = nil @ content_type = nil @file =“/ home / reea / projects / ruby​​ / learning_cms / public / uploads / asset_info / file / 20 / img.jpg”&gt;

     

AssetInfo.last.file.file.content_type   =&GT;零

1 个答案:

答案 0 :(得分:1)

Carrierewave说他们将来会弃用此功能并建议使用Carrierwave::SanitizedFile而不是

https://github.com/carrierwaveuploader/carrierwave/blob/v0.11.2/lib/carrierwave/processing/mime_types.rb

此方法附加了一个覆盖方法

https://github.com/carrierwaveuploader/carrierwave/blob/v0.11.2/lib/carrierwave/processing/mime_types.rb#L56

也许这可以给你指路。