gpt4 book ai didi

ruby-on-rails - Carrierwave:保存原始文件名不起作用

转载 作者:数据小太阳 更新时间:2023-10-29 09:02:59 24 4
gpt4 key购买 nike

我在 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)。 uploader 中的相关代码是这样的(根据 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”的列。文件名保存在该列中,但它不是原始文件名,它实际上是经过清理的文件名。

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

谢谢。

最佳答案

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

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

类似下面的内容。

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

关于ruby-on-rails - Carrierwave:保存原始文件名不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30856055/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com