Thank you! Thank you! Thank you! That worked on the first try!! Much Appreciated!!!
On Oct 20, 12:28 am, Jim Douglas <[email protected]> wrote: > This is what I'm doing. YMMV and assorted disclaimers; it's quite > likely that this can be improved upon. > > (1) I generate this place-holder for the file download in my GWT web > pages: > > out.println("<div id=\"__gwt_downloadFrame\" tabIndex='-1'></ > div>"); > > (2) To initiate a download from the client side, I do this: > > public static void download(String p_uuid, String p_filename) > { > String fileDownloadURL = "/fileDownloadServlet" > + "?id=" + p_uuid > + "&filename=" + > URL.encode(p_filename); > Frame fileDownloadFrame = new Frame(fileDownloadURL); > fileDownloadFrame.setSize("0px", "0px"); > fileDownloadFrame.setVisible(false); > RootPanel panel = RootPanel.get("__gwt_downloadFrame"); > while (panel.getWidgetCount() > 0) > panel.remove(0); > panel.add(fileDownloadFrame); > } > > (3) The corresponding FileDownloadServlet does this (with unimportant > details omitted): > > @Override > protected void doGet(HttpServletRequest p_request, > HttpServletResponse p_response) > throws ServletException, IOException > { > String filename = p_request.getParameter("filename"); > if (filename == null) > { > p_response.sendError(SC_BAD_REQUEST, "Missing filename"); > return; > } > > File file = /* however you choose to go about resolving > filename */ > > long length = file.length(); > FileInputStream fis = new FileInputStream(file); > p_response.addHeader("Content-Disposition", > "attachment; filename=\"" + filename + > "\""); > p_response.setContentType("application/octet-stream"); > if (length > 0 && length <= Integer.MAX_VALUE); > p_response.setContentLength((int)length); > ServletOutputStream out = p_response.getOutputStream(); > p_response.setBufferSize(32768); > int bufSize = p_response.getBufferSize(); > byte[] buffer = new byte[bufSize]; > BufferedInputStream bis = new BufferedInputStream(fis, > bufSize); > int bytes; > while ((bytes = bis.read(buffer, 0, bufSize)) >= 0) > out.write(buffer, 0, bytes); > bis.close(); > fis.close(); > out.flush(); > out.close(); > } > > That all causes the selected file to be downloaded to the client > browser in whatever way the browser chooses to handle downloads. > > On Oct 19, 8:49 pm, mike b <[email protected]> wrote: > > > I have read all the other posts about downloading Excel files and how > > to do it w/ an IFRAME, with RequestBuilder, and Window.open(). > > However, none of them actually work. Luckily, I have a working > > servlet which executes and returns successfully with javascript. > > However, we'd like to do it all in GWT. The error message from IE is > > below. The Window.open() DOES work with FF, but not with IE. > > Unfortunately, we must deploy to IE, no options there. > > > Situation: > > GWT 2.0.4 mvp4g 1.2.0 > > Need to download a file to open in Excel. At this point, its actually > > a text file, but the MIME type is setup for Excel. > > > The servlet has been tested w/ straight java script using > > "document.body.appendChild(iframe);". This works like a champ in IE > > and FF. > > > However, when I do "Window.open(url, "_self",null);" in GWT, IE can't > > download the file. It throws an error saying... > > > " > > Internet Exploroer cannot download MyFile from localhost > > > IE was not able to open this Internet site. The requests site is > > either unavailable or cannot be found. Please try again later. > > " > > > In GWT, I have also tried just using a Frame, adding it to a Panel, > > and then calling myFrame.setUrl("myUrl"); > > > This also successfully gets to the servlet, but fails w/ the above > > error message while trying to "open" the file. > > > It seems as if GWT is telling the browser to cancel the download when > > it pops up. > > > Any suggestions? Any guesses? > > > Thanks, > > mikeb -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
