我正在使用Paperclip + Amazon S3来管理用户的上传。我的应用程序现已投入生产,但我必须从
更改文件路径/ URLhas_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之间的区别是什么?
答案 0 :(得分:0)
我们遇到了一个非常相似的问题。我们这样做的方法是在我们的模型中创建一个新字段,这样我们现在有两个使用has_attached_file的字段:
has_attached_file:file
has_attached_file:new_file
在new_file中定义新的正确路径。
然后在处理添加new_file的迁移中,输入代码保存!每条记录。 这会将所有文件放在需要的位置。
然后再做一次迁移以删除new_file并更改has_attached_file:文件以指向正确的路径。
然后你需要清理S3。在我们的例子中,它很容易,因为我们更改了根路径,因此我们可以轻松删除所有旧文件。
我们没有定义:url,只是路径,但这是一段时间(Rails 3 app)。
我可以告诉你,我们现在在所有新项目中都使用了carrierwave而不是paperclip,因为我们发现它更好地维护并且效果更好。
希望这有帮助。