使用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 optionuploadMultiple
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