You can use gwtupload widget which works without a form:http://code.google.com/p/gwtupload/
--
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/-/oHIgm4CUufsJ.
To post to this group, send email to google-we...@googlegroups.com.
To unsubscribe from this group, send email to google-web-tool...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Here is how I doing upload. Use Apache commons on the server and the code below should work. Let me know if you have problems
-Sergey
Web.xml
<servlet>
<servlet-name>fileuploadpackage</servlet-name>
<servlet-class>
com.yourcompany.server.FileUploadPackage</servlet-class>
</servlet>
Client
package com.yourcompany.client;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.FileUpload;
import com.google.gwt.user.client.ui.FormPanel;
import com.google.gwt.user.client.ui.FormHandler;
import com.google.gwt.user.client.ui.FormSubmitEvent;
import com.google.gwt.user.client.ui.FormSubmitCompleteEvent;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.Window;
/**
* @author Sergey Armishev
*/
public class uploadForm extends DialogBox {
public uploadForm() {
super(true,false);
// Create a FormPanel and point it at a service.
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.
VerticalPanel panel = new VerticalPanel();
form.setWidget(panel);
// Create a FileUpload widget.
FileUpload upload = new FileUpload();
upload.setName("FileUpload");
panel.add(upload);
// Add a 'submit' button.
panel.add(new Button("Submit", new ClickListener() {
public void onClick(Widget sender) {
form.submit();
}
}));
panel.add(new Button("Cancel", new ClickListener() {
public void onClick(Widget sender) {
closeDlg();
}
}));
form.addFormHandler(new FormHandler() {
public void onSubmit(FormSubmitEvent event) {
}
public void onSubmitComplete(FormSubmitCompleteEvent event) {
// When the form submission is successfully completed, this event is
// fired. Assuming the service returned a response of type text/html,
// we can get the result text here (see the FormPanel documentation for
// further explanation).
Window.alert(event.getResults());
closeDlg();
}
});
this.setText("new image File");
setWidget(form);
}
void closeDlg() {
hide();
}
}
On the server
package com.yourcompany.server;
import java.io.File;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.servlet.*;
import org.apache.commons.fileupload.util.*;
import java.util.List;
import java.util.Iterator;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
public class FileUpload extends HttpServlet {
File file;
public FileUpload() {
}
/**
*
* @param request
* @param response
* @throws ServletException
* @throws IOException
* @Override
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
FileItem uploadItem = getFileItem(request);
if (uploadItem == null) {
response.getWriter().write("File not uploaded correctly");
return;
}
// save the file to disk
file = saveFile(uploadItem);
if (file == null) {
response.getWriter().write("File upload error");
return;
}
}
/**
* Return the first FileItem of a HTTPServletRequest
*
* @param request
* The HTTPServletRequest for a file upload operation
* @return The first file of the file upload request
*/
@SuppressWarnings("unchecked")
protected FileItem getFileItem(HttpServletRequest request) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> items = upload.parseRequest(request);
Iterator<FileItem> it = items.iterator();
FileItem item = (FileItem) it.next();
return item;
}
catch (FileUploadException e) {
e.printStackTrace();
return null;
}
}
/**
* Save a file on a directory of the server.
*
* @param item
* file to save
* @param sc
* Servlet context
* @return error code
*/
public File saveFile(FileItem fileItem) {
try {
String name = fileItem.getName();
int index = name.lastIndexOf("/");
if(index > 0) {
name = name.substring(index);
} else {
index = name.lastIndexOf("\\");
if(index > 0) {
name = name.substring(index);
}
}
File file = new File("./" + name);
System.out.println("Saved to a file:" + file.getAbsolutePath());
fileItem.write(file);
return file;
}
catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
Class FileUploadPackage
package com.yourcompany.server;
import java.io.File;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.BufferedInputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
/**
* @author Sergey Armishev
*/
public class FileUploadPackage extends FileUpload{
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
FileItem uploadItem = getFileItem(request);
if (uploadItem == null) {
response.getWriter().write("File not uploaded correctly");
return;
}
// save the file to disk
file = saveFile(uploadItem);
//now file is in place
if(file == null)
return;
BufferedInputStream stream = new BufferedInputStream(new FileInputStream(file));
try {
array = Package.LoadContent(stream);
} catch(Throwable ex) {
ex.printStackTrace();
}
String ret;
if(array == null)
ret = "Failed to read file";
else
ret = array.toString();
System.out.println("Response:\n" + ret);
setNoCahs(response);
}
private void setNoCahs(HttpServletResponse response) {
//<% Response.CacheControl = "no-cache" %>
//<% Response.AddHeader "Pragma", "no-cache" %>
//<% Response.Expires = -1 %>
response.setHeader("CacheControl", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "-1");