Rails 5.1 - Ruby 2.3.4 - AWS S3 - Carrierwave& Minimagick
我想将CSV文件导入我的Rails应用程序,并同时上传每张记录的图像。
图像是来自当前AWS S3 Bucket的URL。我可以从本地驱动器上传,但只能在开发中上传。
def self.import(file)
CSV.foreach(file.path, headers: true, header_converters: :symbol) do |row|
Model.find_or_create_by(name: row[:name]) do |m|
m.name = row[:name]
m.description = row[:description]
m.image = URI.parse(row[:image])
m.summary = row[:summary]
end
end
end
CSV只是
name,descripton,image,summary
Test,Test-Description,https://s3.amazonaws.com/main/production/model/7/image/image-formated.jpg,Test-Summary
虽然每当我尝试在我的直播服务器上传时。图像不会被处理。如何正确引用和上传图像?
答案 0 :(得分:0)
我无法加载您拥有的网址,但它应该与以下内容一起使用:
m.image = URI.parse(row[:image]).open
这将返回一个临时文件,Rails将与该模型关联。
<强>背景强>
URI.parse()
返回URI::HTTPS
网址编码的URI,例如:
URI.parse('https://google.com/search?q=test this')
# => #<URI::HTTPS https://google.com/search?q=test%20this> # where %20 is a url encoded space
因此,假设您的模型需要图像文件,您希望打开并保存文件而不是URI。如果这不能解决这个问题,请分享您的模型的配置