this servlet code download file. download local file want download file http url :
("http://www.java2s.com/code/jardownload/sqljdbc4/sqljdbc4-3.0.jar.zip").
package net.codejava; import java.io.file; import java.io.fileinputstream; import java.io.ioexception; import java.io.outputstream; import javax.servlet.servletcontext; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; public class downloadfileservlet extends httpservlet { protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { // reads input file absolute path string filepath = "e:/test/download/mypic.jpg"; file downloadfile = new file(filepath); fileinputstream instream = new fileinputstream(downloadfile); // if want use relative path context root: string relativepath = getservletcontext().getrealpath(""); system.out.println("relativepath = " + relativepath); // obtains servletcontext servletcontext context = getservletcontext(); // gets mime type of file string mimetype = context.getmimetype(filepath); if (mimetype == null) { // set binary type if mime mapping not found mimetype = "application/octet-stream"; } system.out.println("mime type: " + mimetype); // modifies response response.setcontenttype(mimetype); response.setcontentlength((int) downloadfile.length()); // forces download string headerkey = "content-disposition"; string headervalue = string.format("attachment; filename=\"%s"",downloadfile.getname()); response.setheader(headerkey, headervalue); // obtains response's output stream outputstream outstream = response.getoutputstream(); byte[] buffer = new byte[4096]; int bytesread = -1; while ((bytesread = instream.read(buffer)) != -1) { outstream.write(buffer, 0, bytesread); } instream.close(); outstream.close(); } }
first make sure firewall not blocking application. can use fileutils class in apache download url file.
fileutils.copyurltofile(your_url, file);