Here is code that will read a file from a directory. Once clicked, the files will be downloaded.
The files are stored in a directory - D:/filesFolder/
Modify the path, as per your file path in DownloadFile and in .jsp
--------------------------------------------------------------------------------------
The servlet java file is DownloadFile.java
--------------------------------------------------------------------------------------
package com.sandeepshabd.example;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class DownloadFile
*/
public class DownloadFile extends HttpServlet implements
javax.servlet.Servlet{
private static final long serialVersionUID = 1L;
private static final int BUFSIZE = 4096;
/**
* Default constructor.
*/
public DownloadFile() {
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String name = request.getParameter("fileName");
if(name==null || name.length()==0)
{
//DO NOTHING
}else
{
startDownload(response,name);
}
}
void startDownload(HttpServletResponse response,String name)
{
String filePath = "D://filesFolder//"+name;
File file = new File(filePath);
int length = 0;
ServletOutputStream outStream;
try {
outStream = response.getOutputStream();
ServletContext context = getServletConfig().getServletContext();
String mimetype = context.getMimeType(filePath);
// sets response content type
if (mimetype == null) {
mimetype = "application/octet-stream";
}
response.setContentType(mimetype);
response.setContentLength((int)file.length());
String fileName = (new File(filePath)).getName();
// sets HTTP header
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
byte[] byteBuffer = new byte[BUFSIZE];
DataInputStream in;
try {
in = new DataInputStream(new FileInputStream(file)); // reads the file's bytes and writes them to the response stream
try {
while ((in != null) && ((length = in.read(byteBuffer)) != -1))
{
outStream.write(byteBuffer,0,length);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
in.close();
outStream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
---------------------------------- files.jsp under webcontent---------------------------------------------
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
Directories
<%
String root="D://filesFolder//";
java.io.File file;
java.io.File dir = new java.io.File(root);
String[] list = dir.list();
if (list.length > 0) {
for (int i = 0; i < list.length; i++) {
file = new java.io.File(root + list[i]);
if (file!= null && !file.isDirectory() ) {
%>
<%
}
}
}
%>
----------------------------------------------------------------------------------
please I want to know how to print the result on my web page , I don't understand how it gone works
ReplyDelete