Hi Thomas,

Thanks for the suggestion. I would have never thought of something like 
that! I tried your suggestion but unfortunately without success. That said, 
discussing always generates ideas and I had another look at the code. It 
turned out to be much more trivial than that: I was hiding the form panel 
before the submit completed handler is called... I guess I should have 
posted the whole code (a bit long though) ;-) I changed the implementation 
and it looks like it is working now. (it doesn't explain how it still 
managed to work sometimes though).

I kept your suggestion to avoid content sniffing issues in the future. 
Thanks again for a great help!



On Monday, 12 November 2012 13:47:05 UTC+1, Thomas Broyer wrote:
>
> Because Content-Types are so often wrong on the internet (particularly 
> when set to text/html or text/plain), browsers use 
> content-sniffing<http://mimesniff.spec.whatwg.org/>. 
> Because your response does not look like HTML, it might very-well be 
> sniffed as text/plain by the browser, which will then skip the 
> onSubmitComplete.
> Try prepending "<html><body>" to your response so that browsers will 
> "sniff" it as text/html (or in other words, send back HTML, not something 
> that's only *labelled* as being HTML)
>
> On Monday, November 12, 2012 1:11:48 PM UTC+1, Thomas Lefort wrote:
>>
>> I implemented a simple image uploader which relies on the form panel. I 
>> pass an image file via a filupload widget and a multipart encoding to the 
>> server which then processes the image, stores it on the disk and returns 
>> the image file path as a text/html response. On the client side I have an 
>> onSubmitCompleted event handler that sets the image widget url to the one 
>> returned by the servlet.
>>
>> The onSubmitCompleted handler is sometimes (actually quite often) not 
>> called. I checked with firebug, the servlet does return the right file 
>> path, the image is stored, etc... The servlet also gets fully executed with 
>> no error (checked with various traces). I have the behavior for (at least) 
>> FF16. I have the issue in hosted mode or in compiled ran locally (with the 
>> embedded jetty).
>>
>> Here's my servlet code:
>>
>>     @Override
>>     protected void doPost(HttpServletRequest request, HttpServletResponse 
>> response)  throws ServletException, IOException {
>>         response.setContentType("text/html");
>>         PrintWriter writer = response.getWriter();
>>         try {
>>             // default values for width and height
>>             int width = 50;
>>             int height = 50;
>>             InputStream filecontent = null;
>>             String saveFile = null;
>>             List<FileItem> items = new ServletFileUpload(new 
>> DiskFileItemFactory()).parseRequest(request);
>>             for (FileItem item : items) {
>>                 if (item.isFormField()) {
>>                     String fieldName = item.getFieldName();
>>                     String fieldValue = item.getString();
>>                     if(fieldName.equalsIgnoreCase("width")) {
>>                         width = Integer.parseInt(fieldValue);
>>                     }
>>                     if(fieldName.equalsIgnoreCase("height")) {
>>                         height = Integer.parseInt(fieldValue);
>>                     }
>>                 } else {
>>                     String fieldName = item.getFieldName();
>>                     saveFile = FilenameUtils.getName(item.getName());
>>                     if(fieldName.equalsIgnoreCase("image")) {
>>                         filecontent = item.getInputStream();
>>                     }
>>                 }
>>             }
>>             // check values
>>             if(filecontent == null) {
>>                 throw new FileNotFoundException("no file provided");
>>             }
>>             // Process the input stream
>>             ByteArrayOutputStream out = new ByteArrayOutputStream();
>>             int len;
>>             byte[] buffer = new byte[8192];
>>             while ((len = filecontent.read(buffer, 0, buffer.length)) != 
>> -1) {
>>                 out.write(buffer, 0, len);
>>             }
>>
>>             String imagePath = processAndStoreImage(out, saveFile, width, 
>> height);
>>             System.out.println(imagePath);
>>             
>>             // return the url of the file
>>             writer.println(imagePath);
>>
>>          } catch (Exception e) {
>>             writeError(writer, "Error whilst processing and storing 
>> image.");
>>         } finally {
>>             writer.flush();
>>             writer.close();
>>         }
>>
>>     }
>>
>> and the onSubmitHandler
>>
>>         imageForm.addSubmitCompleteHandler(new 
>> FormPanel.SubmitCompleteHandler() {
>>             public void onSubmitComplete(SubmitCompleteEvent event) {
>>                 final String result = event.getResults();
>>                 // update thumbnail view with new image
>>                 thumbnailImage.setUrl(result);
>> Window.alert("YES");
>>             }
>>         });
>>
>>
>>
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-web-toolkit/-/y_CztUQAnicJ.
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.

Reply via email to