其他分享
首页 > 其他分享> > 使用Dropzone.js在Struts2中上传多个文件

使用Dropzone.js在Struts2中上传多个文件

作者:互联网

我正在使用DropZone.js

我的配置是

Dropzone.options.myAwesomeDropzone = {
                        url: 'UploadImages',
                        previewsContainer: ".dropzone-previews",
                        uploadMultiple: true,
                        parallelUploads: 5,
                        maxFiles: 20,
                        addRemoveLinks: true,
                        init: function() {
                            this.on("success", function(file, response) {
                                $('.dz-progress').hide();
                                console.log(response);
                                console.log(file);
                            });
                        }
                    }
                });

此代码与我的本地主机完美配合.
我正在将文件上传到UploadImages网址.
我在该url方法中输入了一条正常工作的消息.

我的问题是我没有得到我应该使用哪个名称来获取服务器中的内容.
就像我的服务器端实现中应该访问的imageFile变量,imageName变量,imageContent类型的名称一样.

编辑:
服务器端实现DropZone

Dropzone不提供处理文件的服务器端实现,但文件上传的方式与简单的文件上载形式相同,如下所示:

<form action="" method="post" enctype="multipart/form-data">
  <input type="file" name="file" />
</form>

我得到它包括

<input type="file" name="file" /> 

自动形式
所以我们可以使用文件访问它

如果

<input name="file" type="file" multiple />

然后我们可以使用file []访问它
在服务器端我试过

  public class ImageAction extends ActionSupport {
         private List<File> file;
         private List<String> fileContentType;
         private List<String> fileFileName;

         System.out.println("Inside Image upload ");
        System.out.print("\n\n---------------------------------------\n");
        int i = 0;
        for (File f : file) {
            System.out.print("\nFile [" + i + "] ");
            System.out.print(" length: " + f.length());
            System.out.print(" name:" + getFileFileName().get(i));
            System.out.print(" contentType: " + getFileContentType().get(i));

            i++;
        }
        System.out.println("\n---------------------------------------\n");
       }
       //getter setter  
       }

它正在打印Inside Image上传.

如何在Action类上创建文件的访问字段.

解决方法:

问题

当你使用

<input type="file" name="file" multiple /> 

所有文件都将以name =“file”发送,例如:

06001

这是Struts2 FileUpload Interceptor期望接收的正确参数,使用List< File>以及相关的List< String> for fileName和contentType.

当您使用dropzone.js时,通过向其附加[],将更改文件名以处理多输入客户端:

paramName: The name of the file param that gets transferred.
Defaults to file. NOTE: If you have the option uploadMultiple
set to true, then Dropzone will append [] to the name.

例如.

06002

Struts2完全不喜欢它.

不要乱用自定义拦截器和转换器,而是对用于Struts2项目的dropzone.js库进行简单调整:

>将dropzone.js重命名为dropzone-struts2.js;
>打开文件并搜索“[”n“]”(最新版本中的第866行)
>改变这一行

return "" + this.options.paramName + (this.options.uploadMultiple ? "[" + n + "]" : "");

对这一个

return "" + this.options.paramName; //+ (this.options.uploadMultiple ? "[" + n + "]" : "");

现在它符合Struts2,并且可以使用多个上传.

标签:jquery,java,jsp,struts2,dropzone-js
来源: https://codeday.me/bug/20190628/1320158.html