This is my Strut file.
<action name="sample" class="com.action.getPdf" method="getPdf">
<result name="success" type="stream">
<param name="inputName">fileInputStream</param>
<param name="contentType">application/pdf</param>
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="bufferSize">1024</param>
</result>
</action>
and this is action code where the object of File is getting null
.
public String getPdf()throws Exception
{
Session ss = HibernateUtils.getSess();
Transaction t=ss.beginTransaction();
HttpSession httpsession=request.getSession();
String path2=request.getParameter("path1");
ServletContext servletContext = ServletActionContext.getServletContext();
//String path3=servletContext.getRealPath(path2);
System.out.println("the relative path of the file is:"+path2);
try
{
File fileToDownload = new File(path2);
fileInputStream = new FileInputStream(fileToDownload);
}
catch (Exception e)
{
if (t!=null)
{
t.rollback();
e.printStackTrace();
}
}
finally
{
ss.close();
}
return "success";
}
I have stored the file which I want to download in web content folder and I have stored the path of it in the database. I don't know what is the problem.
The problem with
This method may return
null
if parameterpath1
is missing. If it's notnull
then it should be a valid path to the readable file that you application has access.Read the example
How to read file in Java – FileInputStream
. You can trace the output with the code.The getter is needed to return a
stream
result, and as you are using dynamic parameter in the result config. You should provide the getter forfileName
.I have solved this question. I have stored the physical path of the file in the data base.For example if your project path is : D:/Workspace_ABC/SampleProject/WebContent/D-Files/APJ.AbdulKalam.pdf then store this path as it is in the database table. and then use this path to download file.