0

使用 Windows,Rails v3.2.11,Ruby v1.9.3p0,Paperclip AFAIK 的最新稳定版本。

文件名:“2011-rosé-750mL.png”

我正在尝试更新我的网站,在此过程中,我需要将回形针存储的所有图像(原件)移动到不同的位置。所以基本上我正在阅读每个原始文件并设置附件,然后在模型上运行保存。显然,回形针保存带有重音字符的上传文件没有任何问题,但是当通过引用带有重音字符的名称来保存新文件时,会发生一些不好的事情。

例子:

w = Wine.find(19)
w.photo = File.open("D:/Files/Websites/rails3.website/public/images/store/products/original/2011-rosé-750mL.png", 'rb')
w.save :validate => false

大多数升级过程都有效,直到我得到一个具有上述名称的文件。我得到的错误是:没有这样的文件或目录 - .../2011-rosé-750mL

在此处输入图像描述

我能想到的只是它与名称中文件的字符编码有关 - 这样当回形针在保存时尝试读取文件时,它不会使用正确的字符。File.open(source, 'rb')实际上有效(不会抛出任何错误),只是在保存模型时才会出现此错误。查看错误消息,它引用的是原件的保存目录,而不是我执行时正在读取的目录File.open();所以它在某个地方,但似乎超出了我的控制(Paperclip internals)。

4

2 回答 2

0

根据 trh 的回复,我决定通过使用函数重命名所有文件ActiveSupport::Inflector.transliterate。此外,Paperclip 文件现在默认音译(不再在文件名中使用重音字符)。

于 2013-09-29T23:40:40.350 回答
0

这是一个字符编码问题。我用过这个宝石:

https://github.com/saepia/paperclip-strip-strange-characters

这非常有效,但是我不确定使用这些版本的 ruby​​ 和 rails 会得到什么结果。值得一试。

于 2013-09-29T22:01:10.793 回答