Hi,
In my web-based application using JSP & Servlets I am generartiung some reports as excel files.These excel files i am sending in response for download to the users who are using my application through web.
Now, I am able to download & save the files as excel files.
But one problem:
When i have a single file i am able to download & save it easily.
But in some cases i have mutiple files to be downloaded & saved so how can i do this thing of downloading & saving multiple files coming in the response.
Also i am not able to delete my file on the server after downloading it
Here is my code for downloading my reports:
Code:
public boolean downloadReport(String dirPath,HttpServletResponse response)
{
FileInputStream fis = null;
boolean flag = false;
File f = new File(dirPath);
ArrayList tempFileArrList = new ArrayList();
if(f.isDirectory())
{
File[] fArray = f.listFiles();
for(int i = 0; i < fArray.length; i++)
{
log.debug("File Names Array Content : fArray [" + i + "]" + fArray[i]);
if(fArray[i].exists())
{
try
{
fis = new FileInputStream(fArray[i]);
int fileLength = fis.available();
byte[] bytes = new byte[fileLength];
fis.read(bytes);
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition","attachment; filename = \"myxlfile.xls\" ");
response.getOutputStream().write(bytes);
response.getOutputStream().flush();
//response.getOutputStream().close();
//fis.close();
tempFileArrList.add(fArray[i]);
//fArray[i].delete();
log.debug("DEBUG 10");
flag = true;
}
catch(IOException ioe)
{
log.debug("IOException in GMGController while download "+ioe);
flag = false;
}
catch(Exception e)
{
log.debug("Exception in GMGController while download "+e);
flag = false;
}
}
else
{
continue;
}
}
try
{
response.getOutputStream().close();
fis.close();
flag = true;
}
catch(IOException ioe)
{
log.debug("IOException in GMGController while closing "+ioe);
flag = false;
}
catch(Exception e)
{
log.debug("Exception in GMGController while closing "+e);
flag = false;
}
}
for(int i = 0; i < tempFileArrList.size(); i++ )
{
File file = (File)tempFileArrList.get(i);
if(file.exists())
{
log.info("Deleting file "+ (i+1) + " "+ file.getName());
file.delete();
}
}
return flag;
}
Help me sorting out this...
Jignesh