2010-04-03 42 views
6

我想創建一個Rails控制器,從網絡上下載的JPG文件意甲和它們直接寫入數據庫二進制 (我不是試圖做一個上傳表單)Rails的:如何從HTTP下載文件並保存到數據庫

上做到這一點的方式任何線索?

謝謝

編輯: 下面是一些代碼,我已經使用附件福寶石寫道:

http = Net::HTTP.new('awebsite', 443) 
http.use_ssl = true 
http.verify_mode = OpenSSL::SSL::VERIFY_NONE 
http.start() { |http| 
    req = Net::HTTP::Get.new("image.jpg") 
    req.basic_auth login, password 
    response = http.request(req) 
    attachment = Attachment.new(:uploaded_data => response.body) 
    attachement.save 
} 

我也得到一個「爲#未定義的方法`CONTENT_TYPE」錯誤

回答

6

使用open-url(在Ruby STDLIB)抓取的文件,然後用寶石一樣paperclip將它們存儲在數據庫中作爲附件發送到您的模型。

UPDATE:

Attachment_fu不接受原始字節,它需要一個 「類文件」 對象。使用this example of a LocalFile以及下面的代碼將圖像轉儲到臨時文件,然後將其發送到您的模型。

http = Net::HTTP.new('www.google.com') 
    http.start() { |http| 
    req = Net::HTTP::Get.new("/intl/en_ALL/images/srpr/logo1w.png") 
    response = http.request(req) 
    tempfile = Tempfile.new('logo1w.png') 
    File.open(tempfile.path,'w') do |f| 
     f.write response.body 
    end 
    attachment = Attachment.new(:uploaded_data => LocalFile.new(tempfile.path)) 
    attachement.save 
    } 
+0

謝謝你,我已經試過用另一個創業板,但沒有成功。看到我的示例代碼 – Chris 2010-04-03 15:08:44

+0

上面'content_type'是未定義的,因爲attachement_fu需要一個文件,而不是字節流。我用一些代碼更新了我的答案。 – 2010-04-03 16:03:49

+0

謝謝,它工作:) – Chris 2010-04-03 18:42:39

相關問題