我有一个简单的应用程序上传我在博客数据库中使用carrierwave保存的图片。 (有头衔,身体和形象),我的证书工作正常。
我在s3帐户中使用此网址上传了一张图片: /s3.amazonaws.com/Buket_name / ..路径../ thumb_smile.png
如何使用heroku rails控制台中的图像更新数据库。 这似乎不起作用:
b = Blog.new
b.title = "a blog"
b.body = "some text"
b.image = File.new("s3.amazonaws.com/Buket_name/..path../thumb_smile.png","a")
or
b.image = File.open("s3.amazonaws.com/Buket_name/..path../thumb_smile.png","r")
Errno::ENOENT: No such file or directory -
s3.amazonaws.com/Buket_name/..path../thumb_smile.png
答案 0 :(得分:6)
使用CarrierWave的remote_{name}_url=
属性作为最简单的解决方案。
b = Blog.new
b.title = "a blog"
b.body = "some text"
b.remote_image_url = 'http://s3.amazonaws.com/Buket_name/..path../thumb_smile.png'
b.save
此功能特定于CarrierWave,因此如果您要与其他库执行类似操作,请使用标准库中的open-uri
。
require 'open-uri'
image = open('http://s3.amazonaws.com/Buket_name/..path../thumb_smile.png')
现在image是Tempfile
,可以像Ruby脚本中的文件一样使用。
require 'open-uri'
image = open('http://s3.amazonaws.com/Buket_name/..path../thumb_smile.png')
b = Blog.new
b.title = "a blog"
b.body = "some text"
b.image = image
b.save