当前位置: 首页 > 工具软件 > dhtmlxVault > 使用案例 >

dhtmlx使用翻译(九)dhtmlxVault 文件上传组件

邵轶
2023-12-01

 

5.1 API

5.1.1 attachEvent (evName, evHandler)

版本:大众版

参数:

evName  可定义事件名称

evHandler 用户自定义处理函数.

用途:对当前vault事件绑定用户的自定义的处理js函数,这里支持两种格式定义


5.1.2 create (htmlObject)

版本:大众版

参数:

htmlObject 绑定vault的html容器控件id div,span等

用途:通过容器控件创建一个vault组件。


5.1.3 getFileExtension (fileName)

版本:大众版

参数:

fileName:文件全路径

用途:通过文件全路径获得文件类型。

5.1.4 detachEvent(id)

版本:大众版

参数:

id 事件序号,全局唯一

用途:

删除vault中某个事件的处理过程


5.1.5 onAddFile (fileName)

版本:大众版

参数:

fileName: 文件全路径

用途:当前文件添加或上传前触发当前事件

实例:

vault.onAddFile = function(fileName) { 

      var ext = this.getFileExtension(fileName); 

      if (ext != "txt" && ext != "doc") { 

         alert("You may upload only text documents (txt, doc). Please retry."); 

         return false; } 

      else return true; 

   };


5.1.6 onFileUploaded (file)

版本:大众版

参数:

file: 上传文件中单个js消息对象,主要包含

file = { id: "1", name: "file.name", uploaded: true/false, error: true/false };

用途:当前文件上传完成后触发当前事件,每个文件上传完成后触发

实例:

vault.onFileUploaded = function(file) { 

      alert("id:" + file.id + ",name:" + file.name +  ",uploaded:" + file.uploaded + ",error:" + file.error); 

   };

5.1.7 onUploadComplete(files)

版本:大众版

参数:

files: 上传文件组js消息对象,主要包含

file = { id: "1", name: "file.name", uploaded: true/false, error: true/false };

用途:当前文件上传完成后触发当前事件,所有文件上传完成后触发

实例:

vault.onUploadComplete = function(files) { 

      var s=""; 

      for (var i=0; i<files.length; i++)  { 

         var file = files[i]; 

         s += ("id:" + file.id + ",name:" + file.name + ",uploaded:" + file.uploaded + ",error:" + file.error)+"/n"; 

      } 

      alert(s); 

    };

5.1.8 setFilesLimit (count)

版本:大众版

参数:

count: 当前可上传文件数量

用途:设置当前可上传文件数量,默认为零,即无限制

实例:


5.1.9 setFormField(fieldName, value)

版本:大众版

参数:

fieldName: 当前提交form中的元素对象名称、id等

value:当前提交form中的元素对象值

用途:上传文件中,设置相关附件变量或表单信息 ,需要在create后定义,这个功能很好

实例:

vault.create("vaultDiv");

vault.setFormField("customerId", "PS104");

vault.setFormField("country", "UK");

vault.setFormField("groupId", null);//若为值为null则当前变量不附加提交


后台读取方式:

FileItemFactory factory = new ProgressMonitorFileItemFactory(

request, fileId);

ServletFileUpload upload = new ServletFileUpload(factory);

List items = upload.parseRequest(request);

Iterator iter = items.iterator();

while (iter.hasNext()) {

FileItem item = (FileItem) iter.next();

if (item.isFormField()) {

//窗口对象对象处理, 如:customerId, country

System.out.println("窗口对象===" + item.getFieldName()+"===" +item.getString());

} else {

//上传文件对象处理

String fieldName = item.getFieldName();

String fileName = item.getName();

}


5.1.10 setImagePath (path)

版本:大众版

参数:

path: 皮肤文件路径

用途:设置皮肤文件路径

实例:


5.1.11 setServerHandlers(uploadHandler, getInfoHandler, getIdHandler)

版本:大众版

参数:

uploadHandler: 上传文件处理对象

getInfoHandler:上传处理响应信息处理对象

getIdHandler:当前上传线程处理Id到session中

用途:服务端处理对象

实例:


5.1.12 vault.strings

版本:大众版

参数:

设置个性化的vault

用途:vault各元素表面设置

实例:

vault.strings = { remove: "Remove", done: "Done", error: "Error" };

vault.strings.remove = "删除"; // Remove

vault.strings.done = "上传成功";      // Done

vault.strings.error = "上传错位";     // Error

vault.strings.btnAdd = "新增文件";

 vault.strings.btnUpload = "上传";

vault.strings.btnClean = "清除记录";

vault.strings.errors["TooBig"] = “000”;

5.2 相关使用说明

一、vault处理文件上传的机制是使用commons-fileupload机制实现,采用异步请求的ajax模式完成操作,这里可以实现多文件或单文件的上传,并设定器最大附件size,在上传文件的同时也可以完成页面变量或参数的传递,如果是中文参数,需要对其dhtmlxvault.js做一定修改,主要是避免在tomcat中发生转码异常的问题,具体在(格式化dhtmlxvault.js)后

570行左右,原为:


this.uploadForm.action = this.pathUploadHandler + "?sessionId=" + this.sessionId + "&fileName=" + escape(this.getFileName(this.getCurrentInputFile(id).value)) + "&userfile=" + this.getCurrentInputFile(id).id;

如果当前路径包含中文信息,在tomcat6中会爆

java.io.CharConversionException: isHexDigit

这是因为 org.apache.tomcat.util.http.Parameters 中不能对客户端传过来的数据进行解码。url中包含中文参数,使用escapse问题,但还是不能解决最终问题


在tomcat6中解决如下:


1 在server.xml中设置 URIEncoding编码格式

  《Connector port="8080" protocol="HTTP/1.1" 

               connectionTimeout="20000" 

               redirectPort="8443" URIEncoding="UTF-8"/》

2 url中文参数或整个url中转码处理


即 url = encodeURI(url);


java中不做任何转码修改,

String fileName = request.getParameter("fileName") ;

如果你写成

String fileName = java.net.URLDecoder.decode(request.getParameter("fileName"),"UTF-8") );

也行


二、当前支持最大上传大小this.MAX_FILE_SIZE = 900 * 1024 * 1024;这里可自己扩展方法修改当前值

 

(注:本人文章均为原创,转载请注明出处!20100702写于深圳。)

 

 类似资料: