CarrierWave::MimeTypes
已将set_content_type
方法添加到上传器中,因此已弃用。除其他事项外,如果给定的内容类型是通用的(application/octet-stream
或binary/octet-stream
),this method会尝试检测内容类型。
CarrierWave::MimeTypes
的{{3}}说:
直接从SanitizedFile对象获取content_type
但是,如果定义它是否是通用的,则此类始终返回现有内容类型。 deprecation message
现在我们通过清除内容类型来手动处理它,如果它是泛型类型并让库正确检测它。我们可以通过调用::MIME::Types.type_for
来设置它,但是我们正在尝试将代码保持为尽可能兼容的升级。
现在不推荐application/octet-stream
是否有使用通用内容类型(CarrierWave::MimeTypes
)处理CarrierWave上传的最佳做法?
答案 0 :(得分:1)
对于那些在我们有更好的事情之前来到这里的人,我们现有的解决方案如下:
# we replicate this idea of generic types from CarrierWave::MimeTypes
GENERIC_CONTENT_TYPES = %w[application/octet-stream binary/octet-stream]
# and add a clearing method to our uploader processor
process :clear_generic_content_type
def clear_generic_content_type
file.content_type = nil if GENERIC_CONTENT_TYPES.include?(file.try(:content_type))
end
答案 1 :(得分:0)
Here on Carrierwave docs表示不再需要设置内容类型:
设置内容类型
从v0.11.0开始,mime-types gem是一个运行时依赖项 内容类型自动设置。你不再需要这样做了 手动