It seems an issue with the maximum configured limit for post requests at your server side.
-Manolo On Tue, Jul 13, 2010 at 10:43 AM, Mika Tikkanen <[email protected]> wrote: > On Mon, Jul 12, 2010 at 7:26 PM, Jeff Chimene <[email protected]> wrote: >> >> On 07/11/2010 11:17 AM, Roope wrote: >> > Hi >> > >> > I'm currently developing some bioinformatics tools and I want to make >> > them as web apps. >> > >> > The thing is that user needs to input files that might be up to 4Gb >> > but usually the biggest is just about 250Mb. >> > >> > There are two main use-cases: >> > 1. Steaming the file and taking just some small parts of it to string >> > 2. Reading the whole file and making object from each line in file >> > >> > I would like to do all the file processing in client side, but I >> > understood that it is not yet possible using gwt? >> >> In general the answer is yes, but not because of GWT. Until wide-spread >> browser support of HTML 5 which will provide better local file handling. > > > So GWT wont support it yet and there might be some browsers that do support > it. So I could use those browser that do support it and use > some JavaScript code? > >> >> > If I keep the server local it is feasible to upload some 250mb files >> > and process them at the server side, but I have no success so far in >> > this, even with 10mb file. >> >> You might provide some background on the "... no success so far..." path. > > I managed to upload some over 1MB files but the over 10MB didn't upload. > Here is the server side code, copied most of it and the rest of the code I > show from some example how to do this or from forums. > import org.apache.commons.fileupload.FileItemIterator; > import org.apache.commons.fileupload.servlet.ServletFileUpload; > import java.io.BufferedInputStream; > import java.io.IOException; > import java.io.InputStream; > import java.io.OutputStream; > import javax.servlet.ServletException; > import javax.servlet.http.HttpServlet; > import javax.servlet.http.HttpServletRequest; > import javax.servlet.http.HttpServletResponse; > public class FileUpload extends HttpServlet { > public void doPost(HttpServletRequest req, HttpServletResponse res) > throws ServletException, IOException { > try { > ServletFileUpload upload = new ServletFileUpload(); > res.setContentType("text/plain"); > FileItemIterator iterator = upload.getItemIterator(req); > while (iterator.hasNext()) { > copy(iterator.next().openStream(), res.getOutputStream()); > } > } catch (Exception ex) { > throw new ServletException(ex); > } > } > public static void copy(InputStream is, OutputStream os) throws IOException > { > byte buffer[] = new byte[8192]; > int bytesRead; > BufferedInputStream bis = new BufferedInputStream(is); > while ((bytesRead = bis.read(buffer)) != -1) { > os.write(buffer, 0, bytesRead); > } > is.close(); > os.flush(); > os.close(); > } > } > Here is the the part from web.xml needed(replace * with your own stuff) > <servlet> > <servlet-name>fileUploaderServler</servlet-name> > <servlet-class>com.*.*.server.FileUpload</servlet-class> > </servlet> > <servlet-mapping> > <servlet-name>fileUploaderServler</servlet-name> > <url-pattern>/*/fileupload</url-pattern> > </servlet-mapping> > ...and here is the code for the form that uses the fileupload > private static FormPanel getForm(final DialogBox dialogBox,final TextArea > ta) { > final FormPanel form = new FormPanel(); > form.setAction(GWT.getModuleBaseURL() + "fileupload"); > // Because we're going to add a FileUpload widget, we'll need to set the > // form to use the POST method, and multipart MIME encoding. > form.setEncoding(FormPanel.ENCODING_MULTIPART); > form.setMethod(FormPanel.METHOD_POST); > // Create a panel to hold all of the form widgets. > final VerticalPanel panel = new VerticalPanel(); > form.setWidget(panel); > // Create a FileUpload widget. > final FileUpload upload = new FileUpload(); > upload.setName("uploadFormElement"); > panel.add(upload); > HorizontalPanel horizontal = new HorizontalPanel(); > // Add a 'submit' button. > horizontal.add(new Button("Submit", new ClickHandler() { > public void onClick(ClickEvent event) { > form.submit(); > } > })); > // Add a 'cancel' button. > horizontal.add(new Button("Cancel", new ClickHandler() { > public void onClick(ClickEvent event) { > dialogBox.hide(); > } > })); > panel.add(horizontal); > // Lets add handlers > form.addSubmitHandler(new SubmitHandler() { > @Override > public void onSubmit(SubmitEvent event) { > if (upload.getFilename().length() == 0) { > Window.alert("Must select a valid file"); > event.cancel(); > } > } > }); > form.addSubmitCompleteHandler(new SubmitCompleteHandler() { > public void onSubmitComplete(SubmitCompleteEvent event) { > ta.setText(event.getResults()); > dialogBox.hide(); > } > }); > return form; > } > >> >> For files of this size, I'd consider creating a file share on the server >> or using FTP. I'm guessing the data collection occurs on the PC? If so, >> you won't be able to process the files locally until HTML 5 and local >> file support. Depending on your environment, you might be able to >> remote-mount a disk device and write directly to that device from the >> data collection source. >> >> > So what would you suggest me to do? Besides dumping the web >> > application idea and making some java applet. >> >> You want to move the data to the server, construct a server app that >> retrieves data slices on demand and sends them to the client for >> rendering. You can certainly do the Java app on the server to >> retrieve/preprocess the data, then render it on the client using various >> graphing packages. Search this list for pointers to SVG, or graphing >> libraries. > > I will probably make java applet that can do the parsing of the file for the > user and the the result, the smaller files, will be uploaded to server and > then the string or required objects from that file are returned. This way it > is done at the "cleint side" but without including the web application in > the process. After GWT and the browsers update to support reading file at > client side I will dump the java tool. > Is there way to check how big the file is that the user is trying to send? > Besides at the server side.. > Thank you for the help! > > -- > 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. > -- 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.
