如何使用gwtupload上载文件
我正试图上传一个文件在GWT,我被困在这两天了 现在我正在尝试一些教程,下面是我的代码 我下面的代码永远不会进入服务器端,任何想法 或者如果有人能给我提供一些工作代码 这是我客户端的代码如何使用gwtupload上载文件,gwt,Gwt,我正试图上传一个文件在GWT,我被困在这两天了 现在我正在尝试一些教程,下面是我的代码 我下面的代码永远不会进入服务器端,任何想法 或者如果有人能给我提供一些工作代码 这是我客户端的代码 public class UploadDb extends Composite{ private FlowPanel panelImages = new FlowPanel(); public UploadDb() { initWidget(panelImage
public class UploadDb extends Composite{
private FlowPanel panelImages = new FlowPanel();
public UploadDb() {
initWidget(panelImages);
// Create a new multiuploader and attach it to the document
MultiUploader defaultUploader = new MultiUploader(FileInputType.LABEL);
panelImages.add(defaultUploader);
defaultUploader.setEnabled(true);
// Add a finish handler which will load the image once the upload finishes
defaultUploader.addOnFinishUploadHandler(onFinishUploaderHandler);
}
// Load the image in the document and in the case of success attach it to the viewer
private IUploader.OnFinishUploaderHandler onFinishUploaderHandler = new IUploader.OnFinishUploaderHandler() {
public void onFinish(IUploader uploader) {
if (uploader.getStatus() == Status.SUCCESS) {
new PreloadedImage(uploader.fileUrl(), showImage);
System.out.println("Server message " + uploader.fileUrl());
}
}
};
// Attach an image to the pictures viewer
private OnLoadPreloadedImageHandler showImage = new OnLoadPreloadedImageHandler() {
public void onLoad(PreloadedImage image) {
image.setWidth("75px");
panelImages.add(image);
}
};
}
在我的服务器端
public class DashBoardUploadServlet extends UploadAction {
private static final long serialVersionUID = 1L;
Hashtable<String, String> receivedContentTypes = new Hashtable<String, String>();
/**
* Maintain a list with received files and their content types.
*/
Hashtable<String, File> receivedFiles = new Hashtable<String, File>();
/**
* Override executeAction to save the received files in a custom place
* and delete this items from session.
*/
@Override
public String executeAction(HttpServletRequest request, List<FileItem> sessionFiles) throws UploadActionException {
String response = "";
int cont = 0;
for (FileItem item : sessionFiles) {
if (false == item.isFormField()) {
cont ++;
try {
/// Create a new file based on the remote file name in the client
// String saveName = item.getName().replaceAll("[\\\\/><\\|\\s\"'{}()\\[\\]]+", "_");
// File file =new File("/tmp/" + saveName);
/// Create a temporary file placed in /tmp (only works in unix)
// File file = File.createTempFile("upload-", ".bin", new File("/tmp"));
/// Create a temporary file placed in the default system temp folder
File file = File.createTempFile("upload-", ".bin");
item.write(file);
/// Save a list with the received files
receivedFiles.put(item.getFieldName(), file);
receivedContentTypes.put(item.getFieldName(), item.getContentType());
/// Send a customized message to the client.
response += "File saved as " + file.getAbsolutePath();
} catch (Exception e) {
throw new UploadActionException(e.getMessage());
}
}}
/// Remove files from session because we have a copy of them
removeSessionFileItems(request);
/// Send your customized message to the client.
return response;
}
公共类DashBoardUploadServlet扩展UploadAction{
私有静态最终长serialVersionUID=1L;
Hashtable receivedContentTypes=新Hashtable();
/**
*维护包含已接收文件及其内容类型的列表。
*/
Hashtable receivedFiles=新Hashtable();
/**
*重写executeAction以将收到的文件保存在自定义位置
*并从会话中删除此项目。
*/
@凌驾
公共字符串执行操作(HttpServletRequest请求,列表会话文件)引发UploadActionException{
字符串响应=”;
int cont=0;
对于(文件项:会话文件){
if(false==item.isFormField()){
cont++;
试一试{
///基于客户端中的远程文件名创建新文件
//String saveName=item.getName().replaceAll(“[\\\\/>您的web.xml
中的servlet映射不正确。您必须将其更改为:
<servlet-mapping>
<servlet-name>UploadServlet</servlet-name>
<url-pattern>*.gupld</url-pattern>
</servlet-mapping>
上传servlet
*古普尔德先生
如果您使用firebug或chrome dev工具检查浏览器服务器对话框,您应该会看到404 HTTP错误
在客户端尝试此代码
public void onModuleLoad() {
final FormPanel form = new FormPanel();
form.setAction("/myFormHandler");
form.setEncoding(FormPanel.ENCODING_MULTIPART);
form.setMethod(FormPanel.METHOD_POST);
VerticalPanel panel = new VerticalPanel();
form.setWidget(panel);
FileUpload upload = new FileUpload();
upload.setName("uploadFormElement");
panel.add(upload);
// Add a 'submit' button.
panel.add(new Button("Submit", new ClickListener() {
public void onClick(Widget sender) {
form.submit();
}
}));
RootPanel.get().add(form);
}
点击此链接,只需添加您的主机路径
String page=GWT.getModuleBaseURL()+“upload”;
还有你的
servlet调用路径defaultUploader.setServletPath(第页);
它非常有效。。
如果您还想在本地文件夹上上载文件,而不是在servlet上添加具有foldername的驱动器路径。您不需要添加servlet路径,请添加multiUploader.setServletPath(“您的servlet路径”);
另外,通过添加multiuploader.setAutoSubmit(true)使用FileUpload并将其添加到formPanel.form.setEncoding(formPanel.ENCODING\u MULTIPART);form.setMethod(formPanel.METHOD\u POST)中来提交上传;上传后这个文件会去哪里,我想对这个文件做一些工作,从那里我可以检索这个上传的文件你只能在服务器检查链接中得到这个,但是在GWT的开发模式中,有没有办法得到它?使用fileupload小部件没有办法尝试使用jsni。可能你会得到这正是使用gw的目标tupload,除了准备客户端正确设置表单、破解浏览器按钮以使用任何小部件、发送文件、处理进度之外,它还提供了有效的servlet来轻松处理文件,甚至在GAE服务器和开发模式下,发送回服务器信息以检索文件或预览图像。是的,默认情况下,这是非常正确的d将servlet路径设置为servlet.gupld
,因此模式*.gupld
是中所述的最佳选项。开发人员可以覆盖此路径,在这种情况下@junaidp应该调用defaultUploader.setServletPath(“/Upload”)
,如果他不想像@Manolo建议的那样更改web.xml
。
public void onModuleLoad() {
final FormPanel form = new FormPanel();
form.setAction("/myFormHandler");
form.setEncoding(FormPanel.ENCODING_MULTIPART);
form.setMethod(FormPanel.METHOD_POST);
VerticalPanel panel = new VerticalPanel();
form.setWidget(panel);
FileUpload upload = new FileUpload();
upload.setName("uploadFormElement");
panel.add(upload);
// Add a 'submit' button.
panel.add(new Button("Submit", new ClickListener() {
public void onClick(Widget sender) {
form.submit();
}
}));
RootPanel.get().add(form);
}