Servlet code to download text file from website – Java

Here’s a servlet code example to download a text file from a website.

For example

Let’s say a text file named “testing.txt” , and you want to let user download it with a URL , for example “http://localhost:8080/servlet/DownloadDemo” .

1. Create a text file named “testing.txt” , put it into the project root folder.

\--servlet (project root folder)
      \--testing.txt (download file here)
      \--WEB-INF
           \--web.xml

2. Servlet code

package com.mkyong;
 
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class ServletDownloadDemo extends HttpServlet{
 
  private static final int BYTES_DOWNLOAD = 1024;
 
  public void doGet(HttpServletRequest request, 
   HttpServletResponse response) throws IOException{
	response.setContentType("text/plain");
	response.setHeader("Content-Disposition",
                     "attachment;filename=downloadname.txt");
	ServletContext ctx = getServletContext();
	InputStream is = ctx.getResourceAsStream("/testing.txt");
 
	int read=0;
	byte[] bytes = new byte[BYTES_DOWNLOAD];
	OutputStream os = response.getOutputStream();
 
	while((read = is.read(bytes))!= -1){
		os.write(bytes, 0, read);
	}
	os.flush();
	os.close();	
   }
}
Note
The “getResourceAsStream()” method with a forward slash (“/”), which represent the root of your web application.

3. Web deployment descriptor

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 
	<display-name>serlvetdemo</display-name>
 
	<servlet>
		<servlet-name>ServletName</servlet-name>
		<servlet-class>com.mkyong.ServletDownloadDemo</servlet-class>
	</servlet>
 
	<servlet-mapping>
		<servlet-name>ServletName</servlet-name>
		<url-pattern>/DownloadDemo</url-pattern>
	</servlet-mapping>
 
</web-app>

4. Compiled it and copy to the Tomcat folder

\--Tomcat
     \--webapps
          \--servlet 
               \-- testing.txt (download file)
               \--WEB-INF 
                    \--web.xml
                    \--classes
                         \--com
                              \--mkyong
                                   \--ServletDownloadDemo.class

4. Done , access URL http://localhost:8080/servlet/DownloadDemo , it will prompts user to download the text file automatically.

Note
You may interest this file download example in Struts 1.x
Tags :

About the Author

mkyong
Founder of Mkyong.com and HostingCompass.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider make a donation to these charities.

Comments