2014-08-31 2 views
0

Я пытаюсь загрузить изображение из URL в рубин и рельсов, до сих пор, что я сделал этоЗагрузка изображения из URL в Ruby, и Rails

require 'base64' 
     parsedUri = URI.parse('http://somewebsite.com/path/to/image.jpeg') 
     http = Net::HTTP.new(parsedUri.host, parsedUri.port) 
     if params[:src].include? "https" 
      http.use_ssl = true 
     end 
     request = Net::HTTP::Get.new(parsedUri.request_uri, {'User-Agent' => 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0'}) 
     response = http.request(request) 
     image = Base64.encode64(response.body) 
     File.open('some.jpeg', "w+") do |f| 
      f.write(image) 
     end 

, Теперь этот код делает файл в моем корневой каталог, но когда я его открываю, он дал мне ошибку «Ошибка интерпретации файла изображения JPEG (не файл JPEG: начинается с 0x64 0x61)», ирония заключается в том, когда я открываю этот файл в gedit и использую тот же base64, который был закодирован для рендеринга изображения в браузер с использованием тега img. Изображение получается визуализированным. Я использую Ubuntu. Пожалуйста, помогите мне водить меня орехи

+1

Я не вижу необходимости называть 'Base.encode'. Вы пробовали это без этого? Просто 'image = response.body'? – spickermann

+0

@spickermann это сработало благодаря –

ответ

1

Часть Base64.encode64 не нужна. Я удалил это и немного изменил код:

uri = URI.parse('http://somewebsite.com/path/to/image.jpeg') 
http = Net::HTTP.new(uri.host, uri.port) 
http.use_ssl = params[:src].include?('https') 

response = http.request(
    Net::HTTP::Get.new(uri.request_uri, { 
    'User-Agent' => 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0' 
    }) 
) 

File.open('some.jpeg', 'wb') { |f| f.write(response.body) } 
+0

true @spickermann сказал то же самое. Также мне нужно было изменить режим от «w +» до «wb» из-за ошибки кодирования исключения из ascii в utf-8. –

+0

Можете ли вы принять этот ответ, если он решит ваш вопрос. Иначе он останется в списке нерешенных вопросов. Btw: Я spickermann ... – spickermann

Смежные вопросы