2

我正在将我的 rails 应用程序从 2.3 升级到 3.2,但我遇到了回形针问题。我的应用以前使用的是回形针 v2.3.5,现在我使用的是带有回形针 v3.3.1 的 rails 3.0.20

当我尝试将头像上传到 S3 时会出现问题。看起来回形针在将其发送到 S3 之前转义了路径,但是当我询问特定样式的 url 时,该 url 使用路径的未转义版本,这会导致 S3 出现“NoSuchKey”错误(更像404 未找到)

在我的模型中,我有

Paperclip.interpolates :last_modified do |attachment, style|
  attachment.instance.updated_at.to_i
end

:path => "folder/:id/:style.:extension?:last_modified",
:url  => ":s3_domain_url",



所以我的应用程序的旧版本使用来自 S3 的 url,例如:

http://my-bucket.s3.amazonaws.com/folder/123/thumbnail.png?123456789



但是现在,每次我上传头像时,S3 都会像这样存储 url:

http://my-bucket.s3.amazonaws.com/folder/123/thumbnail.png%3F123456789

并向我的模型询问缩略图样式的 url,将返回:

http://my-bucket.s3.amazonaws.com/folder/123/thumbnail.png?123456789

S3 找不到。



我知道这似乎是一个容易解决的问题,但我主要担心的是生产应用程序有很多用户有很多图片,更新他们所有的图片是一项微妙的任务,手动转义问号不是解决方案.

4

1 回答 1

3

我刚刚想出了如何解决与此类似的问题。有一个新escape_url选项。也许试着把它变成false?

:path => "folder/:id/:style.:extension?:last_modified",
:url  => ":s3_domain_url",
:escape_url => false
于 2013-03-26T20:15:20.753 回答