【问题标题】:Carrierwave: Saving Original Filename not workingCarrierwave:保存原始文件名不起作用
【发布时间】:2015-06-15 22:31:51
【问题描述】:

我在 Rails 4.2.1 中使用最新的 Carrierwave(主分支)。我需要保存上传文件的原始文件名(在清理之前)。我在 Carrierwave Wiki 中找到了有关如何操作的部分 (https://github.com/carrierwaveuploader/carrierwave/wiki/How-to:-Create-random-and-unique-filenames-for-all-versioned-files#saving-the-original-filename)。上传器中的相关代码是这样的(根据 wiki 条目):

# in `class PhotoUploader`
before :cache, :save_original_filename
def save_original_filename(file)
  model.original_filename ||= file.original_filename if file.respond_to?(:original_filename)
end

但这对我不起作用。我的数据库表中有一个名为“original_filename”的列。并且文件名保存在该列中,但它不是原始文件名,它实际上是经过清理的文件名。

知道在哪里挂钩此方法以保存原始文件名吗?

谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 carrierwave


    【解决方案1】:

    显然,有很多人,包括我自己,都遇到过这个问题。例如,这个问题 (https://github.com/carrierwaveuploader/carrierwave/issues/1835) 详细说明了为什么它不能按预期工作。

    我遇到的一种解决方法是在传入参数中使用file 实例显式设置original_filename

    类似于以下内容。

    <Model>.create({file: params[:file], original_filename: params[:file]&.original_filename]})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-26
      • 1970-01-01
      • 2016-08-02
      • 1970-01-01
      • 2017-10-18
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      相关资源
      最近更新 更多