Carrierwave:保存原始文件名不起作用

时间:2015-06-15 22:31:52

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

我在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'的列。在我的数据库表中。文件名保存在该列中,但它不是原始文件名,它实际上是清理过的文件名。

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

感谢。

1 个答案:

答案 0 :(得分:2)

显然,有很多人(包括我自己)遇到了这个问题。例如,此问题(https://github.com/carrierwaveuploader/carrierwave/issues/1835)详细说明了为何无法按预期进行。

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

类似以下内容。

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