2013-04-24 138 views
0

我发展模式当GWT如何mkdirs。 fileupload工作得很好。但我会做目录在Linux上/var/wms/year/month/file.jpg。从客户端这是我的源代码: 附加组件形成客户端文件上传在Eclipse

fileUpload = new SingleUploader(FileInputType.LABEL); 
    fileUpload.setFileInputPrefix("PJ"); 
    fileUpload.addOnFinishUploadHandler(onFinishUploaderHandler); 
    layoutContainerItemRight.add(fileUpload, formData); 

方法是addOnFinishUploadHandler

private IUploader.OnFinishUploaderHandler onFinishUploaderHandler = new IUploader.OnFinishUploaderHandler() { 
    public void onFinish(IUploader uploader) { 
     if (uploader.getStatus() == gwtupload.client.IUploadStatus.Status.SUBMITING) { 
      String month = VisionProperties.getBulan(); 
      String year = DateTimeFormat.getFormat("d-M-yyyy").format(new Date()).split("-")[2]; 
      String strDirectoy = "/var/wms/" + year + "/" + month + "/"; 
      File file = new File(strDirectoy); 
      if (!file.exists()) { 
       file.mkdirs(); 
      } 
     } 

     if (uploader.getStatus() == gwtupload.client.IUploadStatus.Status.SUCCESS) { 
     String msg = uploader.getServerInfo().message; 
     fileName = msg.toString(); 
      if(selectWindow != 2){ 
       img.setUrl("servlet.gupld?show=&fieldname=" + fileName); 
       itemPanel.render(img.getElement()); 
      }else{ 
       tb.setVisible(true); 
       tb.setText("Download File "+uploader.getFileName()); 
      } 
     } 
    } 
}; 

如何使当上传文件的过程目录下的文件?

+0

GWT打包机:http://www.vectomatic.org/google-web-toolkit/a-file-api-for-gwt – Spiff 2013-04-24 06:49:58

回答

1

您正试图在客户端使用java.io.File,GWT jre emulation中的一组软件包不支持该端口。

如果您想在客户端执行此操作,您必须使用旧版浏览器不支持的javascript File Api,并且未在gwt-core中实现。使用元素,你可以使用Api只与Chrome,但我不积极。所以最好通过jsni包装它,它计划在gwtupload中,但是还没有时间框架。请注意,使用js文件Api,您不能访问您的真实文件系统,而是浏览器中的虚拟文件系统。要将创建的文件保存在本地文件系统中,您必须使用和iframe进行下载,以便向用户询问保存的位置。

否则,如果您想在服务器端执行此项工作,请在您的servlet中重写executeAction,如果您要扩展UploadAction

+0

我使用executeAction创建目录到服务器端。如何在我上传文件之前创建目录文件夹? – mogi 2013-04-24 10:07:58

+0

上传前无法创建文件夹。 'UploadAction'重新记录文件并将它保存在一个临时文件夹中,然后调用'executeAction',你可以创建dirs,将上传的文件复制到它,并删除临时文件。 – 2013-04-24 15:31:57

0

你不能这样做在客户端。您可以通过以下方式在服务器端执行此操作:

  1. 通过另一个rpc/http调用将文件上载到服务器之前。
  2. 你当正在对srever端执行文件上传的servlet将文件上传到服务器后。

HTML5文件API被限制为只读,甚至在现代浏览器的行为。

参考 - 1. Basic File upload in GWT 2. How to retrieve file from GWT FileUpload component?

+0

文件API是RW,但在浏览器的受限区域(虚拟FS)。 – 2013-04-24 08:50:27

+0

如何在上传文件之前创建目录文件夹? – mogi 2013-04-24 10:06:15

+0

一旦你即完成文件上传的客户端部分之前提交你可以解雇获得目录中创建一个额外的RPC调用或HTTP Servlet中调用。我仍然希望在文件上传servlet的第二个选项中执行此操作。 – SSR 2013-04-24 11:35:47