ruby-on-rails – Rails:通过Carrierwave将图像上传到Amazon S3
(图片属于帖子)
图像上传器可以工作,但仅当我在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类中,这也是必要的,因为我希望我的网络服务器处理图像,以便创建缩略图版本. 我希望这对你或将来的其他人有所帮助. 最好的祝福,埃格伯特 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |