Hello,

Many thanks for your code. Two questions:

What does mean inline; instead of attachment; ?
Is it correct that you have the files you send physically stored on the disk
of your web application server? (You have a method returnFile() where you
seem to read from a file into a ServletOutputStream.

I basically write directly from memory into a ServletOutputStream and I do
not flush or close anything:

            ServletOutputStream servletOut = response.getOutputStream();
            es.getWorkbook().write(servletOut);

where es.getWorkbook() returns a Workbook object which represents a Excel
Workbook (thats from POI). It has a write method which allows writing to
anything derived from java.io.OutputStream.

So I tried what you made in your code but it does not work. It works, if I
do NOT specify any kind of 'content-disposition' header, just a content-type
set to application/x-msexcel. The problem is, that IE 5.5 and 6 open the
spreadsheet inside the browser and I did not find a way to save it!!

It is terribly cazy stuff!!!

Thomas
----- Original Message -----
From: "SATISH.T" <[EMAIL PROTECTED]>
To: "'Struts Users Mailing List'" <[EMAIL PROTECTED]>
Sent: Friday, May 31, 2002 3:01 PM
Subject: RE: Nightmare with response header 'content-disposition'


> Hi...
> Me had to develop a similar application to download /view the files in
> browser..
> am attaching my servlet code which u might find useful , with all the
> response headers set correctly.
> Special care had to be take for IE5.5 as it does'nt really behave as
> expected.
>
> -----Original Message-----
> From: Tom Bednarz [mailto:[EMAIL PROTECTED]]
> Sent: Friday, May 31, 2002 5:43 PM
> To: Struts Users Mailing List
> Subject: Re: Nightmare with response header 'content-disposition'
>
> Well I fixed my attach(e)ment typo and now with MS IE it asks me to save
> the
> file or to open excel. Both do NOT work and an error message appears
> saying
> that IE is not able to open the source file or disk.
>
> Well, I do NOT generate a file on the web server. I simply create an
> output
> stream... Does anybody know what the problem is?
>
> With netscape it doesn't work either. There it does not recognise the
> correct file name, it tries to store a file named as the servlet name.
> The
> file size is 0! Opera does not recognise the file name but it you can
> enter
> a name and then the correct excel sheet is saved to disk.
>
> As I said, its a big browser nightmare. It would be great if somebody
> could
> tell me how the header must be formatted to be correctly recognised by
> all
> major browsers....
>
> Cheers
>
> Thomas
> ----- Original Message -----
> From: "Rajeshwar Rao V" <[EMAIL PROTECTED]>
> To: "Struts Users Mailing List" <[EMAIL PROTECTED]>
> Cc: <[EMAIL PROTECTED]>
> Sent: Friday, May 31, 2002 10:45 AM
> Subject: RE: Nightmare with response header 'content-disposition'
>
>
> > i think the syntax is wrong!!!Here is the correct syntax..
> >
> > res.setHeader ("Content-Disposition",
> >                            "attachment; filename=\"" + _fileName +
> "\"");
> >
> >
> > and
> >
> > why this?
> >      response.addHeader("content-disposition",
> > "filename="+es.getFileName());-------->remove it..not required.
> >
> > -----Original Message-----
> > From: Tom Bednarz [mailto:[EMAIL PROTECTED]]
> > Sent: Friday, May 31, 2002 2:10 PM
> > To: poi - user; struts user list
> > Subject: Nightmare with response header 'content-disposition'
> >
> >
> > Hi,
> >
> > First of all sorry for the cross-posting but I really don't know which
> is
> > the correct list for my problem.
> >
> > I use Struts and velocity to generate my HTML pages. I use POI to
> generate
> > some reports out of database data and other datasources such as CORBA
> > servers.
> >
> > I face the following problem:
> >
> > When using struts you usually create actions and forward any type of
> result
> > to a jsp or in my case to a velocity template. When I present a query
> result
> > as a HTML page, the user finds two links on that pages: 'get as CSV'
> and
> > 'get as EXCEL'. I have written a servlet, which transforms data (that
> I
> keep
> > in a session object) into CSV or EXCEL using apache POI.
> >
> > This looks as follows for Excel:
> >
> > public class transformIntoExcel extends HttpServlet
> > {
> >     private static final String CONTENT_TYPE =
> "application/vnd.ms-excel";
> >     //Initialize global variables
> >     public void init() throws ServletException
> >     {
> >     }
> >     //Process the HTTP Get request
> >     public void doGet(HttpServletRequest request, HttpServletResponse
> > response) throws ServletException, IOException
> >     {
> >         HttpSession session = request.getSession(false);
> >         response.setContentType(CONTENT_TYPE);
> >         //PrintWriter out = response.getWriter();
> >
> >         ExcelSheet es =
> (ExcelSheet)session.getAttribute("ExcelSheet");
> >         if (es != null)
> >         {
> >             response.addHeader("content-disposition", "attachement;
> > filename="+es.getFileName());
> >             response.addHeader("content-disposition",
> > "filename="+es.getFileName());
> >             session.removeAttribute("ExcelSheet");
> >             ServletOutputStream servletOut =
> response.getOutputStream();
> >             es.getWorkbook().write(servletOut);
> >         }
> >     }
> >     //Clean up resources
> >     public void destroy()
> >     {
> >     }
> > }
> >
> > I found out, that the interpretation of the header
> 'content-disposition'
> > seems to be absolutely browser dependant. I tried IE 5, 5.5 and 6, NS
> 6
> and
> > Opera 6. The only correct behaviour I noticed with Opera. It opend a
> dialog
> > and asked me where to save the file. It showed a correct file name
> like
> > 'MyExelSheet.xls' (Exactly what was returned by es.getFileName() in my
> code
> > above)
> >
> > Some browsers (mostly microsoft IE) throw an error message saying that
> the
> > file could not be found. The file name is in most cases some crap like
> a
> > mixture of characters and numbers. Some browsers also display the
> servlet
> > name! I did a mapping of the above servlet to 'makeexcel' so some
> browsers
> > try to store a file 'makeexcel' without any extension.
> >
> > I do something similar with CSV Files (comma separated values).
> > The content type is set there to
> > CONTENT_TYPE = "text/comma-separated-values"
> > This works much better and every browser in every version shows a file
> save
> > dialog and proposes the correct file name as I set it in my
> > content-disposition header.
> >
> > I also found many different content types for excel such as
> > "application/vnd.ms-excel" or "application/x-msexcel" or
> "application/excel"
> >
> > Does anybody know how this works? I like that the user MUST save the
> file
> > before opening. Some browsers as M$ IE use to open known file types
> directly
> > as OLE objects inside the browser unless the user configures the
> browser
> NOT
> > do do so (usually done for security reasons).  IE is a OLE container
> that
> > can open most OLE objects directly. I personally hate this behaviour
> because
> > it is highly insecure!!
> >
> > Any help would be greatly appreciated.
> >
> > Thomas
> >
> >
> > --
> > To unsubscribe, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> >
> > --
> > To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
> >
> >
>
>
> --
> To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
>


----------------------------------------------------------------------------
----


> --
> To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to