【问题标题】:How come files uploaded to S3 via URL have no extension?为什么通过 URL 上传到 S3 的文件没有扩展名?
【发布时间】:2011-07-27 20:55:53
【问题描述】:

我在 heroku 上使用 s3 上传图片没问题。

我还有一种方法可以让用户从网址上传。

不幸的是,当使用这种方法上传图片时,它们似乎在没有文件扩展名的情况下保存。

所以我得到了这种图片网址的链接......

http://s3.amazonaws.com/mysite/images/23/original.?1311799466

如果同一张图片已经上传到本地,它看起来像这样:

http://s3.amazonaws.com/mysite/images/23/original.JPG?1311799466

在我的pic 模型中,这是我用来允许通过网址上传的代码:

def download_remote_image

        begin
            self.image = open(URI.parse(self.pic_url))
        rescue
            errors.add_to_base("- something is wrong with the image url.")
            return false
        else
            return true
        end
    end

有什么想法吗?

【问题讨论】:

  • pic_url 的例子是什么?您使用的上传器也可能需要 File 类上的其他自定义属性,这些属性通常注入自定义模块中。
  • pic_url 将是一个字符串,如:“randsco.com/_miscPgs/cssZoom03.jpg

标签: ruby-on-rails image-processing amazon-s3 heroku paperclip


【解决方案1】:

用这个改变:

def download_remote_image
  begin
    io = open(URI.parse(pic_url))
    def io.original_filename; base_uri.path.split('/').last; end
    io.original_filename.blank? ? nil : io
  rescue
  end
end

小心,最新版本的 Paperclip 在遇到 io 对象而不是 File 时会抛出错误,不确定他们是否解决了这个问题。

【讨论】:

    【解决方案2】:

    由于您使用的是回形针,所以应该使用回形针生成图片网址,例如:

    self.image(:thumb)
    

    【讨论】:

      猜你喜欢
      • 2019-06-19
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 2020-10-01
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多