# HTTPClient download binary file

**URL:** <https://www.ruby-forum.com/t/httpclient-download-binary-file/136511>\
**Category:** Ruby\
**Created:** [May 2, 2008, 10:22pm UTC](https://www.ruby-forum.com/t/httpclient-download-binary-file/136511 "2008-05-02T22:22:27Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![deadinplastic](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/d2c977/32.png) [@deadinplastic](https://www.ruby-forum.com/u/deadinplastic)\
**Post date:** [May 2, 2008, 10:22pm UTC](https://www.ruby-forum.com/t/httpclient-download-binary-file/136511/1 "2008-05-02T22:22:27Z")

</div>

Hi,

I’m writing a simple program which downloads a resource from the  
internet. When I save a file to disk, it always ends up a few bytes  
larger than it should be and is thus recognized as a damaged file.

The code I’m using:

require ‘httpclient’  
client = HTTPClient.new(nil)  
my\_file = File.new(“x:\temp\logo2.gif”, “w”)  
puts  
my\_file.write(client.get\_content(“[http://www.google.com/intl/en\_ALL/images/logo.gif](http://www.google.com/intl/en_ALL/images/logo.gif)”))

puts actually prints the correct size 8558, but when I check the size on  
disk it is 8617 bytes.  
I’ve also downloaded the file with firefox to check if the increased  
file size is due to the filesystem i’m using. When downloaded which  
firefox the file is 8558 bytes on disk, so something must be wrong in my  
code.

Regards,  
DarnDao

---

<div class="post-metadata">

**Author:** ![deadinplastic](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/d2c977/32.png) [@deadinplastic](https://www.ruby-forum.com/u/deadinplastic)\
**Post date:** [May 3, 2008, 2:31am UTC](https://www.ruby-forum.com/t/httpclient-download-binary-file/136511/2 "2008-05-03T02:31:29Z")

</div>

Hi,

Aa Aa wrote:

> Hi,
> 
> I’m writing a simple program which downloads a resource from the  
> internet. When I save a file to disk, it always ends up a few bytes  
> larger than it should be and is thus recognized as a damaged file.
> 
> The code I’m using:
> 
> require ‘httpclient’  
> client = HTTPClient.new(nil)  
> my\_file = File.new(“x:\temp\logo2.gif”, “w”)  
> try with:  
> my\_file = File.new(“x:\temp\logo2.gif”, “wb”)

> puts  
> my\_file.write(client.get\_content(“[http://www.google.com/intl/en\_ALL/images/logo.gif](http://www.google.com/intl/en_ALL/images/logo.gif)”))
> 
> puts actually prints the correct size 8558, but when I check the size on  
> disk it is 8617 bytes.  
> I’ve also downloaded the file with firefox to check if the increased  
> file size is due to the filesystem i’m using. When downloaded which  
> firefox the file is 8558 bytes on disk, so something must be wrong in my  
> code.
> 
> Regards,  
> DarnDao

Regards,  
Park H.

---

<div class="post-metadata">

**Author:** ![deadinplastic](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/d2c977/32.png) [@deadinplastic](https://www.ruby-forum.com/u/deadinplastic)\
**Post date:** [May 3, 2008, 3:19am UTC](https://www.ruby-forum.com/t/httpclient-download-binary-file/136511/3 "2008-05-03T03:19:56Z")

</div>

Thanks works ok now. Since the b parameter is DOS\Windows only, would  
that throw an exception on a non windows OS?

Heesob P. wrote:

> Hi,
> 
> Aa Aa wrote:
> 
> > Hi,
> > 
> > I’m writing a simple program which downloads a resource from the  
> > internet. When I save a file to disk, it always ends up a few bytes  
> > larger than it should be and is thus recognized as a damaged file.
> > 
> > The code I’m using:
> > 
> > require ‘httpclient’  
> > client = HTTPClient.new(nil)  
> > my\_file = File.new(“x:\temp\logo2.gif”, “w”)  
> > try with:  
> > my\_file = File.new(“x:\temp\logo2.gif”, “wb”)
