在客户端上的fileupload时如何在gwt上使用mkdirs

时间:2013-04-24 04:16:50

标签: gwt gwtupload

我在eclipse中开发模式。 fileupload工作得很好。但我会在linux上创建目录 /var/wms/year/month/file.jpg 。这是我的客户端源代码: 添加组件到表单

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());
            }
        }
    }
};

上传文件进程时如何制作目录文件?

2 个答案:

答案 0 :(得分:1)

您正试图在客户端使用java.io.File,但GWT jre emulation中的包集不支持。

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

否则,如果您想在服务器端执行此操作,请在扩展executeAction时覆盖servlet中的UploadAction

答案 1 :(得分:0)

您无法在客户端执行此操作。您可以通过以下方式在服务器端执行此操作

  1. 之前,通过另一个rpc / http调用将文件上传到服务器。
  2. 在srever端执行文件上载servlet后将文件上传到服务器之后。
  3. HTML5 FILE API仅限于现代浏览器中的只读行为。

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