2016-05-21 11 views
2

Rubyを使用して.tar.gzファイルをダウンロードしようとしています。ダウンロード時に、ファイルは何らかの形で常に破損しています。オープン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

申し訳ありませんが、私は自分自身を明確にしていません。しかし私はrubyを使ってzipファイルをダウンロードしたかったので、何らかの理由でファイルが壊れてしまいました。だから私はそれを行う別の方法があるかどうか尋ねたがっていました。 – ArafatK

+0

ファイルはどのように「破損していますか?ファイルを調べて、実際にダウンロードされたデータを確認しましたか? –

+0

これが正しいかどうかはわかりません。しかし、ファイルを開こうとすると、アーカイブをロードしている間にエラーが発生したとのメッセージが表示されます。 – ArafatK

答えて

2

変更openコールでファイルモード:

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

それはあなたがバイナリモードを望んでいたテキストモードでファイルを開きました。

GithubからRawファイルをダウンロードするには、適切なURLを使用する必要があります。この場合、正しいURLはファイルのrepoページ(指定された元のURL)のRawリンクを右クリックして表示され、RawのURLはダウンロードしようとしている実際のバイナリイメージを含むURLです。 URLを次のように変更してください:https://github.com/Arafatk/language-basics/raw/master/img.tar.gz、私が答えの先頭に示した変更はうまくいきます。

+0

a.rb:3:write:書き込み用に開かれていません(IOError) \t a.rb:3: 'inブロック

' \tからa.rb:2:openで ' \tから'
' – ArafatK

+1

私は上記のエラーが発生しています – ArafatK

+0

ありがとうございますが、まだ動作しません。リンクは公開されており、ダウンロードも試すことができます。それはあなたのために働いていますか? – ArafatK

関連する問題