2016-05-21 4 views
2

Я пытаюсь загрузить файл .tar.gz с помощью Ruby. После загрузки файл всегда поврежден в некотором роде.Открытый URI-файл для загрузки поврежденных файлов

Я использую этот код для загрузки файла:

require "open-uri" 
File.open('img.tar.gz', 'wb') do |fo| 
    fo.write open('https://github.com/Arafatk/language-basics/blob/master/img.tar.gz').read 
end 

Есть ли способ исправить это?

+0

Извините, я не стал более ясным. Но я хотел скачать zip-файлы с помощью ruby, и по какой-то причине файл поврежден. Поэтому я хотел спросить, есть ли там другие способы сделать это? – ArafatK

+0

Каким образом файл «поврежден»? Просмотрели ли вы файл, чтобы узнать, какие данные действительно загружаются? –

+0

Я не уверен, что это правильный способ сказать это. Но если я попытаюсь открыть файл, то он говорит об ошибке при загрузке архива – ArafatK

ответ

2

Изменение режима файла в open вызова:

open('https://github.com/Arafatk/language-basics/blob/master/img.tar.gz', "rb").read 

Это было открытие файла в режиме текст, когда вы хотите бинарного режима.

Вам также необходимо использовать правильный URL-адрес для загрузки необработанного файла из Github. В этом случае правильный URL-адрес можно найти, щелкнув правой кнопкой ссылку Raw на странице репо файла (исходный URL-адрес) и что Raw URL-адрес - это тот, который содержит фактическое бинарное изображение, которое вы пытаетесь загрузить. Измените URL-адрес на этот: https://github.com/Arafatk/language-basics/raw/master/img.tar.gz, и изменение, которое я предложил в верхней части ответа, работает отлично.

+0

a.rb: 3: in 'write ': не открыт для записи (IOError) \t из a.rb: 3: in' block in

' \t из a.rb: 2: в 'открытым ' \t из a.rb: 2: в'
' – ArafatK

+1

Я получаю ошибку выше – ArafatK

+0

Спасибо, но его до сих пор не работает. Ссылка является общедоступной, и вы также можете попробовать скачать ее. Он работает на вас? – ArafatK

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