2017-08-21 77 views
1

的Rails 5.1 - 紅寶石2.3.4 - AWS S3 - Carrierwave & MinimagickRails的5 - 使用圖像導入CSV從URL

我想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

我無法加載你的URL,但它應該是這樣工作的:

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 。如果這不能解決此問題,請分享您的型號的配置

+0

此解決方案不起作用。該圖片來自我的S3存儲桶,因此我只是爲上述示例放置了一個通用網址。我正在將映像上傳器安裝到單獨的S3存儲桶中以供導入。我想使用URL中的圖片並將其上傳到新的存儲分區。 –

+0

你能分享你的模型定義嗎? m.image是如何定義的?什麼數據庫類型? – whodini9