我正在使用回形针 gem 处理一些图像并将它们存储到 Amazon S3。每个图像代表一个人的名字。我也想添加对带有 unicode 字符的名称的支持,但由于回形针无法上传名称中带有 unicode 字符的文件,我无法使其工作。我不能在上传之前将 Ñ 更改为 N,因为那样我会覆盖用字母 N 上传的图像。例如。两个用户:NUÑO 和 NUNO。我不能只告诉回形针将 NUÑO.jpg 上传为 NUNO.jpg,因为这会覆盖以前的 NUNO.jpg。
这是我非常标准的生产/登台环境配置:
config.paperclip_defaults = {
:storage => :s3,
:url => ':s3_domain_url',
:path => 'assets/:class/:id/:style.:extension',
:s3_credentials => {
:bucket => ENV['AWS_BUCKET'],
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY_ID']
}
}
这是带有图像附件的相关类:
class NameSpread < ActiveRecord::Base
(...)
has_attached_file :rendered_image,
default_url: lambda { |attach| attach.instance.processing_image },
path: lambda { |attach| attach.instance.save_path },
styles: { (..) },
processors: [ :name_spread_processor ],
default_style: :spread
(...)
end
这是 save_path 方法:
def save_path
if Rails.env.production? || Rails.env.staging?
"assets/:class/#{gender}/#{name}/:style.jpg"
else
"#{Rails.root}/public/assets/:class/#{gender}/#{name}/:style.jpg"
end
end
这是搞砸的部分:#{name}
有任何想法吗?