wood burning stoves*
The moose likes Sockets and Internet Protocols and the fly likes How to determine if the Http response is a File which needs to be downloaded Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Sockets and Internet Protocols
Bookmark "How to determine if the Http response is a File which needs to be downloaded" Watch "How to determine if the Http response is a File which needs to be downloaded" New topic
Author

How to determine if the Http response is a File which needs to be downloaded

Kushal Jhunjhunwala
Greenhorn

Joined: Aug 30, 2011
Posts: 3
Hi,

I am working on developing a http client. In the get request, I am displaying whatever the data is contained in HTTP response, even if its a downloadable file. Now I am planning to add a check to it if the Http response contains a file then instead of displaying the data, save the data in a file. The problem is I am unable to determine the right condition to find if the response is a downloadable file. Initially i thought that it is determined using content-type, if the content-type is application/something then its a file. But when I tried with developing a local web page which hosted a file and set the content-type to a random string with "/" anywhere the file was downloaded successfully( I am using chrome). Please help in determining the criteria for a http response to represent a file.

Thanks
Kushal
Paul Clapham
Bartender

Joined: Oct 14, 2005
Posts: 18675
    
    8

Look at the Content-Disposition header for more information about the server's intentions: MIME#Content-Disposition.
Kushal Jhunjhunwala
Greenhorn

Joined: Aug 30, 2011
Posts: 3
Thanks for replying Paul. I can not rely on content-disposition as many web sites does not add this header to the response. In my case also I am not adding content-disposition and yet the browser is downloading the file.
Paul Clapham
Bartender

Joined: Oct 14, 2005
Posts: 18675
    
    8

Sure, you can't rely on it being present. But that doesn't mean you should ignore it, either, if it is present. If you get a Content-Disposition header then you ought to at least consider doing what it says to do.

As for how browsers decide what to do with responses, you could certainly try to mimic that if you thought it was a good thing to do. But now you're talking about the design of your HTTP client rather than its implementation. There's no magic method which tells you whether it's possible to display a file with a particular MIME type; you have to build up your own cross-reference between MIME types and executable programs on each system. Consider for example that you can't display a PDF unless you have something on the computer which is capable of displaying PDFs.
Kushal Jhunjhunwala
Greenhorn

Joined: Aug 30, 2011
Posts: 3
Exactly, I am trying to mimic the working of the browser but I am not associating any mime type with an application. i am just trying to download the file. Like if I send a get request to URL which have a pdf/iso/image/doc/exe/zip file etc, the client will simply save the file to a predefined location and display only text or xml files i.e files which are human readable/editable in notepad.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: How to determine if the Http response is a File which needs to be downloaded