gpt4 book ai didi

ruby-on-rails - Rails 4、Paperclip、Amazon S3 - 上传到特定文件夹

转载 作者:行者123 更新时间:2023-12-04 03:46:30 25 4
gpt4 key购买 nike

这是我第一次使用 Paperclip 和 Amazon S3,我很确定我遗漏了一些明显的东西。如果有人能指出来就好了。

在 S3 存储桶中,我有 2 个文件夹,发展 生产 , 根据环境上传图片到对应的文件夹。我尝试了提出的解决方案 here如下在我的model.rb ——

options = {}

if Rails.env.production?
options[:path] ||= 'production'
else
options[:path] ||= 'development'
end

has_attached_file :picture, options

我一直收到一个名为 的文件发展 / 生产上传到 S3 存储桶(如屏幕截图所示)。

enter image description here

我什至尝试通过 :path作为回形针的配置设置。同样的事情发生了 - 一个名为 development/production 的文件夹被上传

我在这里错过了什么吗?我要做的就是将我在开发环境中得到的图片上传到开发文件夹中,反之亦然用于生产。

最佳答案

path 选项也需要指定文件模式。尝试这个

模型

has_attached_file :picture,
:storage => :s3,
:bucket => 'your_bucket',
:path => ":env_folder/:attachment/:id/:style/:filename.:extension"

# some other model code here ...

private

# interpolate in paperclip
Paperclip.interpolates :env_folder do |attachment, style|
Rails.env.production? ? 'production' : 'development'
end

编辑

如果你只是离开 :path选项为“开发”或“生产”,您告诉 Paperclip 文件的路径是 yourbucket/development这就是为什么您会根据屏幕截图看到单个文件。这就是为什么在 :path 中拥有唯一标识资源的东西很重要的原因。选项(我在示例中使用了 :id,它将使用模型的 id 属性)。

如果您有选择,我认为更好的方法是将环境分成自己的存储桶。换句话说, development环境将有自己的存储桶和 production会有自己独立的桶。这不仅在代码中更清晰,您还可以为每个存储桶/环境设置不同的策略,根据我的经验,一旦您的应用程序在生产中发布,这是必需的。希望这可以帮助。

关于ruby-on-rails - Rails 4、Paperclip、Amazon S3 - 上传到特定文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26965360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com