You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Atanu <at...@gmail.com> on 2007/07/27 15:11:40 UTC

How to download a file from portlet


Hi All,


I am following the recommendations at
http://opensource.atlassian.com/confluence/spring/pages/viewpage.action?pageId=3132
while I download a file from a portlet. I include the request from portlet
to servlet using a PortletRequestDispatcher. But while rendering, portal
prints the binary contents in the portlet page, instead of giving an option
for download.

 

I am using Struts 2 in Liferay 4.2.x. Can you please point out what am I
missing here?
 

Thanks and regards,

Atanu Dasgupta

 

 

Here are my code snippets.

 

===== STRUTS ACTION ======

 

            RenderRequest request = PortletActionContext.getRenderRequest();

            String uuid = (String) request.getParameter("reportUuid");

            RenderResponse res = PortletActionContext.getRenderResponse();

            PortletRequestDispatcher rd =
PortletActionContext.getPortletConfig()

                       
.getPortletContext().getRequestDispatcher("/download?reportUuid=" + uuid);

            try {

                  rd.include(request, res);

            } catch (IOException ioe) {

                  ioe.printStackTrace();

            } catch (PortletException pe) {

                  pe.printStackTrace();

            ===== SERVLET ======

res.setContentType("application/xdownload");

            res.setHeader("Content-Disposition", "attachment;
filename=x.pdf");

            try {

                  res.setContentLength(report.getData().available());

            } catch (IOException e) {

                  e.printStackTrace();

            }

 

            

            try {

                  OutputStream os = res.getOutputStream();

                  InputStream is = report.getData();  // get the actual Data

                  int read = 0;

                  byte[] bytes = new byte[1024];

                  while((read = is.read(bytes)) != -1) {

                        os.write(bytes, 0, read);

                  }

                  os.flush();

                  os.close();

                  is.close();

            } catch (IOException ioe) {

                  ioe.printStackTrace();

            }

 

-- 
View this message in context: http://www.nabble.com/Portlets-and-Liferay--tf1836171.html#a11828846
Sent from the Tapestry - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org