ajaxfileupload是一个jquery的文件上传插件,可以利用ajax无刷新上传文件到服务器。其实现原理为:利用js动态创建一个表单,并提交。但默认情况下,该插件只能上传一个文件,且不能携带其它参数。有时候,我想给在上传文件的同时,还带一个参数,用来表示将文件上传到哪个目录下。下面的修改就可以实现这个功能。
$.ajaxFileUpload({ url:"${ctx}/tmsReceiver/doUpload.do",// 用于文件上传的服务器端请求地址 secureuri:false,// 一般设置为false fileElementId:"fileUpload",// 文件上传空间的id属性 <input type="file" id="file" name="file" /> dataType: "json",// 返回值类型 一般设置为json params:{"side":side,"identityNum":$("#identityNum").val()},success: function(data){...
2、修改插件代码:
在ajaxfileupload.js中调用创建表单的函数处,增加一个参数:
var form = jQuery.createUploadForm(id,s.fileElementId,s.params);
createUploadForm: function(id,fileElementId,params) { //create form var formId = 'jUploadForm' + id; var fileId = 'jUploadFile' + id; var form = jQuery('<form action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>'); var oldElement = jQuery('#' + fileElementId); var newElement = jQuery(oldElement).clone(); jQuery(oldElement).attr('id',fileId); jQuery(oldElement).before(newElement); jQuery(oldElement).appendTo(form); for(var key in params){ var property = '<input type="text" name="'+key+'" value="'+params[key]+'">'; $(property).appendTo(form); }...