Andy, What I posted before should work. If you have specific questions after implementing it, post them here and we'll try to help you.
On 10/24/05, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > I have nearly the same problem: > > I have the link of a sample file (pdf, doc or something else) in the database. > Now the user should have the possibility to open this file via a > CommandButton or CommandLink > > I'm not quite sure, how I can do this? > Thx for help > > -----Ursprüngliche Nachricht----- > Von: Mike Kienenberger [mailto:[EMAIL PROTECTED] > Gesendet: Samstag, 22. Oktober 2005 03:00 > An: MyFaces Discussion > Betreff: Re: FileDownload capability? > > > No, the data being downloaded in the example below is read from the > database. The "attachment;filename=" header just provides a default > suggested file name for browsers that implement it. You can write out > any data you like. You can generate it on the spot if you want. I > have a similar control under struts that creates CSV data from the > table rows. > > On 10/21/05, CONNER, BRENDAN (SBCSI) <[EMAIL PROTECTED]> wrote: > > Thanks. In your example, does one have to first write out the data to a > > file on the server? I see you set the header with > > attachment;filename=..., but then I also see that you have > > responseStream.write(selectedContent.getContentDate().getData()). > > > > - Brendan > > > > -----Original Message----- > > From: Mike Kienenberger [mailto:[EMAIL PROTECTED] > > Sent: Friday, October 21, 2005 2:41 PM > > To: MyFaces Discussion > > Subject: Re: FileDownload capability? > > > > > > Here's one way. > > > > Note that facesContext.getResponseStream() is only valid during the > > render-response phase, so you'll have to access the HttpRequest > > directly (not sure how it works for portlets). > > > > > > public String downloadContentData() > > { > > Content selectedContent = > > (Content)this.announcementContentDataList.getRowData(); > > FacesContext facesContext = FacesContext.getCurrentInstance(); > > // OutputStream responseStream = > > facesContext.getResponseStream(); > > > > try > > { > > OutputStream responseStream = > > ((HttpServletResponse)facesContext.getExternalContext().getResponse()).g > > etOutputStream(); > > if (null == responseStream) throw new > > AbortProcessingException("responseStream is null"); > > > > HttpServletResponse response = > > (HttpServletResponse)facesContext.getExternalContext().getResponse(); > > response.setContentType(selectedContent.getContentType()); > > > > response.setHeader("Content-Disposition","attachment;filename=\"" > > + selectedContent.getContentId() + "\""); > > > > response.setContentLength(selectedContent.getContentData().getData().len > > gth); > > > > responseStream.write(selectedContent.getContentData().getData()); > > > > response.flushBuffer(); > > } > > catch (IOException exception) > > { > > // TODO Auto-generated catch block > > exception.printStackTrace(); > > } > > > > facesContext.responseComplete(); > > > > return null; > > } > > > > > > > > On 10/21/05, CONNER, BRENDAN (SBCSI) <[EMAIL PROTECTED]> wrote: > > > We have an application requirement saying that the user needs the > > > ability to push a button on our report page to download the report > > data > > > into a local file on the user's machine suitable for loading into a > > > spreadsheet. How can something like this be done? > > > > > > - Brendan > > > > > > > > ______________________________________________________________________ > > This email and any files transmitted with it are confidential and > intended solely for the use of the individual or entity to whom they > are addressed. If you have received this email in error please notify > your system manager. > > This footnote also confirms that this email message has been swept > for the presence of computer viruses. > ______________________________________________________________________ >

