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, dando-lhe um nome e alguns valores > >> que devem > >> > ser > >> > // associados > >> > // Com suas opções. > >> > ListBox lb = new ListBox(); > >> > lb.setName("**listBoxFormElement"); > >> > lb.addItem("foo", "fooValue"); > >> > lb.addItem("bar", "barValue"); > >> > lb.addItem("baz", "bazValue"); > >> > panel.add(lb); > > >> > // Criar um widget FileUpload. > >> > final FileUpload upload = new FileUpload(); > >> > upload.setName("**uploadFormElement"); > >> > panel.add(upload); > > >> > panel.add(new UploadForm()); > > >> > // Adicionar um botão 'Enviar'. > >> > panel.add(new Button("Submit", new ClickHandler() { > >> > public void onClick(ClickEvent event) { > >> > form.submit(); > >> > } > >> > })); > > >> > //Adicionar um manipulador de eventos para o formulário. > >> > form.addSubmitHandler(new FormPanel.SubmitHandler() { > > >> > @Override > >> > public void onSubmit(SubmitEvent event) { > > >> > if (upload.getFilename().equals("**")) > >> { > >> > event.cancel(); > >> > return; > >> > } > > >> > //Este > > ... > > mais » -- 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.
