java servlet download file example
Here's an example of how to implement a file download servlet in Java:
- Create a servlet that handles file downloads:
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class DownloadServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Get the file name from the request String fileName = request.getParameter("fileName"); // Set the content type and attachment header response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\""); // Get the file from the server's file system String filePath = "/path/to/files/" + fileName; File file = new File(filePath); // Copy the file content to the response output stream try (FileInputStream in = new FileInputStream(file); ServletOutputStream out = response.getOutputStream()) { byte[] buffer = new byte[4096]; int length; while ((length = in.read(buffer)) > 0) { out.write(buffer, 0, length); } out.flush(); } catch (IOException e) { e.printStackTrace(); } } }
This servlet handles GET requests that include a fileName
parameter in the query string. It sets the content type to application/octet-stream
, which is a generic binary file type, and the attachment header to force the browser to download the file instead of displaying it in the browser window.
It then opens the file on the server and streams its content to the response output stream.
- Add the servlet to your web application's
web.xml
deployment descriptor:
<servlet> <servlet-name>DownloadServlet</servlet-name> <servlet-class>com.example.DownloadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>DownloadServlet</servlet-name> <url-pattern>/download</url-pattern> </servlet-mapping>
This maps the DownloadServlet
to the /download
URL pattern.
- Create a link in your JSP or HTML page to trigger the download:
<a href="/download?fileName=myfile.txt">Download File</a>
This link includes the fileName
parameter in the query string, which is used by the DownloadServlet
to locate and download the file.
- Run your web application and click the download link to test the file download.
This example demonstrates a basic file download servlet that can be customized to suit your specific needs. Note that the servlet must be able to access the file on the server's file system, so you'll need to configure the file path accordingly.