加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails:通过Carrierwave将图像上传到Amazon S3

发布时间:2020-12-17 02:02:12 所属栏目:百科 来源:网络整理
导读:(图片属于帖子) 图像上传器可以工作,但仅当我在Post Edit上传图像时才有效.我希望在创建Post时上传图像. 图片上传(“%= f.file_field:image%”)位于新帖子中,因此我猜测Carrierwave正在尝试在创建帖子之前将图片上传到指定路径,从而导致不知道上传的位置.
(图片属于帖子)

图像上传器可以工作,但仅当我在Post Edit上传图像时才有效.我希望在创建Post时上传图像.

图片上传(“<%= f.file_field:image%>”)位于新帖子中,因此我猜测Carrierwave正在尝试在创建帖子之前将图片上传到指定路径,从而导致不知道上传的位置.

这是ImageUploader文件:

class TrackImageUploader < CarrierWave::Uploader::Base
  def cache_dir
   "#{Rails.root}/tmp/uploads"
  end

 include CarrierWave::RMagick

 #storage :file
 #storage :fog

 def store_dir
  "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
 end

 version :featured do
   process :resize_to_fill => [210,145]
 end

 def extension_white_list
   %w(jpg jpeg gif png)
 end
end

我猜测上面代码中的store_dir负责在Amazon S3上的相应路径中保存图像.

如何制作它以便在发布Post后上传图像,以便它可以获得Post.id?

解决方法

我有完全相同的问题,但我找到了解决方案.

我的ImageUploader.rb看起来像这样:https://gist.github.com/egbertp/7572501.在这个文件的第9行,你会看到包括CarrierWaveDirect :: Uploader.通过使用直接上传技术,您的站点用户将他/她的文件直接上传到Rackspace云.但是,在上载时,尚未在您的数据库中创建Image模型,从而导致错误(正如您猜对的那样).

通过禁用直接上载技术,站点用户将图像发送到您的Web服务器,然后创建Image模型并保存在数据库中.在我的ImageUploader类中,这也是必要的,因为我希望我的网络服务器处理图像,以便创建缩略图版本.

我希望这对你或将来的其他人有所帮助.

最好的祝福,埃格伯特

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读