Rails: как скачать файл с http и сохранить его в базу данных - PullRequest
7 голосов
/ 03 апреля 2010

Я хотел бы создать контроллер Rails, который загружает серию файлов jpg из Интернета и напрямую записывает их в базу данных в виде двоичного (Я не пытаюсь заполнить форму загрузки)

Есть какие-нибудь подсказки, как это сделать?

Спасибо

Редактировать: Вот код, который я уже написал, используя гем attachment-fu:

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 'для # "ошибка

1 Ответ

6 голосов
/ 03 апреля 2010

Используйте open-url (в stdlib Ruby), чтобы получить файлы, затем используйте драгоценный камень, такой как paperclip , чтобы сохранить их в БД как приложения к вашим моделям.

UPDATE:

Attachment_fu не принимает необработанные байты, ему нужен объект типа файла. Используйте этот пример 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
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...