Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在客户端上传文件时如何在gwt上使用mkdirs_Gwt_Gwtupload - Fatal编程技术网

在客户端上传文件时如何在gwt上使用mkdirs

在客户端上传文件时如何在gwt上使用mkdirs,gwt,gwtupload,Gwt,Gwtupload,我喜欢eclipse中的模式开发。文件上传工作正常。但我将在linux上把目录设置为/var/wms/year/month/file.jpg。这是我从客户端获得的源代码: 将组件添加到表单 fileUpload = new SingleUploader(FileInputType.LABEL); fileUpload.setFileInputPrefix("PJ"); fileUpload.addOnFinishUploadHandler(onFinishUploaderHand

我喜欢eclipse中的模式开发。文件上传工作正常。但我将在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());
            }
        }
    }
};

如何在上载文件过程中生成目录文件?

您试图在客户端使用GWT中的一组包不支持的
java.io.file

如果您想在客户端实现这一点,就必须使用javascript,这是旧浏览器不支持的,而且在gwt核心中也没有实现。使用elemental你只能在Chrome上使用Api,但我不能肯定。因此,最好通过jsni进行包装,计划在gwtupload中进行包装,但目前还没有时间表。请注意,使用js文件Api,您无法访问真正的文件系统,但可以访问浏览器中的虚拟文件系统。要将创建的文件保存在本地文件系统中,您必须使用和iframe下载文件,以便它询问用户保存文件的位置


否则,如果您想在服务器端完成这项工作,那么如果您正在扩展
UploadAction
,您无法在客户端完成这项工作,那么可以覆盖servlet中的
执行操作。您可以通过以下方式在服务器端执行此操作

  • 在通过另一个rpc/http调用将文件上载到服务器之前
  • 当文件上传servlet在服务器端执行时,将文件上传到服务器
  • 即使在现代浏览器中,HTML5文件API也仅限于只读行为

    参考- 1.
    2.

    GWT包装器:文件api是RW,但位于浏览器的限制区域(虚拟化FS)。如何在上载文件之前创建目录文件夹?一旦完成了文件上载的客户端部分,即在提交之前,您可以启动额外的rpc调用或http servlet调用来创建目录。我仍然希望在文件上传servlet的第二个选项中这样做。如何在上载文件之前创建目录文件夹?上载文件之前无法创建文件夹
    UploadAction
    接收文件并将其保存在临时文件夹中,然后调用
    executeAction
    ,您可以创建目录,将上载的文件复制到其中,然后删除临时文件夹。