I posted this earlier, but I think I may have accidentally clicked "Reply to author".
> Jim, the class is also ClientFileSystemBridge Apache FileUpload? No, I didn't strip out all of my application-related code before I posted it. Also, "id" and "saveAs" are just form names that I happen to be using on the client side; your names will be different. On Mar 5, 4:09 am, Leonardo Terrão <[email protected]> wrote: > Thanks guys! > > Jim, the class is also ClientFileSystemBridge Apache FileUpload? > > Thank you! > > On 2 mar, 17:49, Alfredo Quiroga-Villamil <[email protected]> wrote: > > > > > > > > > If your backend is Spring they also have great support for this. A few > > lines only and you are up and running. > > >http://www.ioncannon.net/programming/975/spring-3-file-upload-example/ > > > Best regards, > > > Alfredo > > > On Fri, Mar 2, 2012 at 3:45 PM, Thad <[email protected]> wrote: > > > I agree with Jim on using Apache FileUpload. > > > > One trick I occasionally use to simplify my upload processing for text > > > fields is to create a hidden field within the form. Before calling > > > form.submit(), I do whatever validation and format conversions I want and > > > assemble the non-file input into a JSON string that I assign to my hidden > > > field. With this method I can submit values from fields outside of the > > > FormPanel and greater control over the fields inside the panel. > > > > On Friday, March 2, 2012 2:33:29 PM UTC-5, Jim Douglas wrote: > > > >> Hi Leonardo, > > > >> I use Apache FileUpload to manage the process: > > > >>http://commons.apache.org/**fileupload/<http://commons.apache.org/fileupload/> > > > >> Here's the doPost() method from my FileUploadServelet: > > > >> @Override > > >> public void doPost(HttpServletRequest p_request, > > >> HttpServletResponse p_response) > > >> throws ServletException, IOException > > >> { > > >> ServletFileUpload upload = new ServletFileUpload(); > > > >> /* > > >> * This tracks the state of the upload progress. The client > > >> will > > >> * occasionally request a progress update; the doGet() method > > >> * returns this information to the client in an XML structure. > > >> */ > > >> FileUploadProgress progress = new FileUploadProgress(); > > >> HttpSession session = p_request.getSession(); > > >> session.setAttribute("**progress", progress); > > >> upload.setProgressListener(**progress); > > > >> try > > >> { > > >> FileItemIterator iter = upload.getItemIterator(p_**request); > > >> StringBuilder response = new StringBuilder(); > > >> Integer id = null; > > >> while (iter.hasNext()) > > >> { > > >> FileItemStream item = iter.next(); > > >> String name = item.getFieldName(); > > >> InputStream stream = item.openStream(); > > >> if (item.isFormField()) > > >> { > > >> String value = Streams.asString(stream); > > >> if ("id".equals(name)) > > >> { > > >> id = Integer.valueOf(value); > > >> } > > >> if ("saveAs".equals(name)) > > >> { > > >> if (id == null) > > >> { > > > >> p_response.sendError(SC_**INTERNAL_SERVER_ERROR, > > >> "No filesystem id for " + name + " " + > > >> value); > > >> return; > > >> } > > >> File f = > > >> ClientFileSystemBridge.**createTempFile(value); > > >> ClientFileSystemBridge.put(id, value, f); > > >> } > > >> response.append(name).append(' ') > > >> .append(value).append('\n'); > > >> } > > >> else > > >> { > > >> String filename = item.getName(); > > >> if (id == null) > > >> { > > >> p_response.sendError(SC_**INTERNAL_SERVER_ERROR, > > >> "No filesystem id for file " + filename); > > >> return; > > >> } > > >> File f = > > >> ClientFileSystemBridge.**createTempFile(filename); > > >> OutputStream out = new FileOutputStream(f); > > >> try > > >> { > > >> // This WILL fail with > > >> org.mortbay.jetty.EofException > > >> // if the client form disappears before we've > > >> read the > > >> // entire stream. > > >> int bytes; > > >> byte buf[] = new byte[32768]; > > >> while ((bytes = stream.read(buf)) > 0) > > >> out.write(buf, 0, bytes); > > >> } > > >> catch (Throwable t) > > >> { > > >> p_response.sendError(SC_**INTERNAL_SERVER_ERROR, > > >> t.getClass().getName() + " " + > > >> t.getMessage()); > > >> t.printStackTrace(); > > >> } > > >> finally > > >> { > > >> out.close(); > > >> stream.close(); > > >> } > > >> ClientFileSystemBridge.put(id, filename, f); > > >> response.append(name).append(' '). > > >> append(f.length()).append(' '). > > >> append(filename).append('\n')**; > > >> } > > >> } > > >> String message = response.toString(); > > >> p_response.reset(); > > >> p_response.setContentType("**text/plain"); > > >> p_response.setContentLength(**message.length()); > > >> Writer writer = p_response.getWriter(); > > >> writer.append(message); > > >> writer.flush(); > > >> } > > >> // catch (FileUploadException e) > > >> // { > > >> // p_response.sendError(SC_**INTERNAL_SERVER_ERROR, > > >> e.getMessage()); > > >> // e.printStackTrace(); > > >> // } > > >> catch (Throwable e) > > >> { > > >> p_response.sendError(SC_**INTERNAL_SERVER_ERROR, > > >> e.getMessage()); > > >> e.printStackTrace(); > > >> } > > >> } > > > >> And a helper function for reporting progress: > > > >> import org.apache.commons.fileupload.**ProgressListener; > > > >> public class FileUploadProgress implements ProgressListener > > >> { > > >> private volatile long m_bytesRead; > > >> private volatile long m_contentLength; > > >> private volatile int m_item; > > > >> public FileUploadProgress() > > >> { > > >> super(); > > >> } > > > >> public void update(long p_bytesRead, long p_contentLength, int > > >> p_item) > > >> { > > >> m_bytesRead = p_bytesRead; > > >> m_contentLength = p_contentLength; > > >> m_item = p_item; > > >> } > > > >> public long getBytesRead() > > >> { > > >> return m_bytesRead; > > >> } > > > >> public long getContentLength() > > >> { > > >> return m_contentLength; > > >> } > > > >> public int getItem() > > >> { > > >> return m_item; > > >> } > > >> } > > > >> On Mar 2, 5:26 am, Leonardo Terrão <[email protected]> wrote: > > >> > Hello everybody! > > > >> > Following are some examples found right here in the discussion group > > >> > took two classes below. > > > >> > In my class I have ArquivoUpload umTextBox a form with a ListBox and a > > >> > FileUpload. In class FileUploadServlet're getting only the data from > > >> > the FileUpload. Could someone help me also take the data from the > > >> > TextBox? > > >> > In debug mode I see everything that is in the form of the request but > > >> > I can not extract the values. > > > >> > public class ArquivoUpload implements EntryPoint { > > > >> > public static final String UPLOAD_ACTION_URL = > > >> GWT.getModuleBaseURL() > > >> > + "upload"; > > > >> > @Override > > >> > public void onModuleLoad() { > > > >> > // Cria um FormPanel e apontá-lo para um serviço. > > >> > final FormPanel form = new FormPanel(); > > >> > form.setAction(UPLOAD_ACTION_**URL); > > > >> > // Porque nós vamos adicionar um widget FileUpload, > > >> vamos precisar > > >> > para > > >> > // definir o > > >> > // Form usar o método POST, e codificação MIME > > >> multipart. > > >> > form.setEncoding(FormPanel.**ENCODING_MULTIPART); > > >> > form.setMethod(FormPanel.**METHOD_POST); > > > >> > // Cria um painel para conter todos os elementos do > > >> formulário. > > >> > VerticalPanel panel = new VerticalPanel(); > > >> > form.setWidget(panel); > > > >> > // Criar um TextBox, dando-lhe um nome para que ele > > >> será submetido. > > >> > final TextBox tb = new TextBox(); > > >> > tb.setName("**TextBoxFormElement"); > > >> > panel.add(tb); > > > >> > // Criar um ListBox,... > > read more » -- 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.
