【问题标题】:Changing the directory of files in AmazonS3 uploaded with Paperclip使用 Paperclip 更改 Amazon S3 上传中的文件目录
【发布时间】:2016-02-06 00:12:36
【问题描述】:

我正在使用 Paperclip + Amazon S3 来管理用户的上传。我的应用程序现在正在生产中,但是我必须从

更改文件路径/url
has_attached_file :file, 
:url => "#{ENV['AWS_S3_FOLDER']}/attachments/:basename_:id.:extension", 
:path => "#{ENV['AWS_S3_FOLDER']}/attachments/:basename_:id.:extension"

:url  => "#{ENV['AWS_S3_FOLDER']}/attachments/patient_:patientid/:basename_:id.:extension", 
:path => "#{ENV['AWS_S3_FOLDER']}/attachments/patient_:patientid/:basename_:id.:extension"

现在,由于路径更改,我无法访问已上传到 AWS S3 的文件。有没有办法替换已经上传到正确路径的文件,以便我可以访问它们?还有一个问题,:url 和 :path 有什么区别?

【问题讨论】:

    标签: ruby-on-rails amazon-web-services amazon-s3 paperclip


    【解决方案1】:

    我们有一个非常相似的问题。我们这样做的方法是在我们的模型中创建一个新字段,这样我们现在就有两个使用 has_attached_file 的字段:

    has_attached_file: 文件

    has_attached_file: new_file

    在 new_file 中定义新的正确路径。

    然后在处理添加新文件的迁移中,放入代码保存!每条记录。 这会将所有文件放在他们需要去的地方。

    然后再进行一次迁移以删除 new_file 并更改 has_attached_file: 文件以指向正确的路径。

    然后您需要清理 S3。在我们的例子中,这很容易,因为我们更改了根路径,因此我们可以轻松删除所有旧文件。

    我们没有定义 :url,只是路径,但这是不久前(Rails 3 应用程序)。

    我可以告诉您,我们现在在所有新项目中都使用carrierwave 而不是回形针,因为我们发现它得到了更好的维护并且工作得更好。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2014-03-18
      • 1970-01-01
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      相关资源
      最近更新 更多