easyui filebox+ajaxfileupload实现异步上传
2018-01-09 12:25
344 查看
由于项目多个文件上传之等于上传总文件大小,就想到用异常上传文件来处理解决,网上找了些资料拿过来不能直接用。其中遇到一些问题,ajaxfileupload.js报错jQuery.handleError is not a function,由于jquery版本1.4.2之前的版本才有handlerError方法,还有就是eaysui
filebox获取不到id,$("input[name='testDoc']").attr("id");这样获取,自己整理了下,测试成功
语法:$.ajaxFileUpload([options])
options参数说明:
1、url 上传处理程序地址。
2,fileElementId 需要上传的文件域的ID,即<input type="file">的ID。
3,secureuri 是否启用安全提交,默认为false。
4,dataType 服务器返回的数据类型。可以为xml,script,json,html。如果不填写,jQuery会自动判断。
5,success 提交成功后自动执行的处理函数,参数data就是服务器返回的数据。
6,error 提交失败自动执行的处理函数。
7,data 自定义参数。这个东西比较有用,当有数据是与上传的图片相关的时候,这个东西就要用到了。
8, type 当要提交自定义参数时,这个参数要设置成post
jsp代码
js代码
服务端代码:
ajaxfileupload.js
filebox获取不到id,$("input[name='testDoc']").attr("id");这样获取,自己整理了下,测试成功
语法:$.ajaxFileUpload([options])
options参数说明:
1、url 上传处理程序地址。
2,fileElementId 需要上传的文件域的ID,即<input type="file">的ID。
3,secureuri 是否启用安全提交,默认为false。
4,dataType 服务器返回的数据类型。可以为xml,script,json,html。如果不填写,jQuery会自动判断。
5,success 提交成功后自动执行的处理函数,参数data就是服务器返回的数据。
6,error 提交失败自动执行的处理函数。
7,data 自定义参数。这个东西比较有用,当有数据是与上传的图片相关的时候,这个东西就要用到了。
8, type 当要提交自定义参数时,这个参数要设置成post
jsp代码
<td class="popTD1 bottom_1" style="text-align: right;">测试资料:</td> <td class="popTD2 bottom_1"><input type="text" id="testDoc" name="testDoc" style="width: 240px" value="" /></td>
js代码
var testDoc= $("input[name='testDoc']").attr("id");
$.ajaxFileUpload({ url: ivs.root + '/qism/rest/consignation/saveTestDoc', secureuri: false, // fileElementId: testDoc, dataType: 'json', type:'post', success : function (data) { if(data.successful){ console.log(data); $('#testDocName').val(data.tag.fileName); $('#testDocPath').val(data.tag.filePath); $('#frmConsignationApplyDetail').submit(); }else{ $.messager.alert("提示", data.message); } } });
服务端代码:
@RequestMapping("/saveTestDoc") @RawResponseBody public Object saveTestDoc(HttpServletRequest request){ MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; CommonsMultipartFile testDoc = (CommonsMultipartFile) multipartRequest.getFile("testDoc"); OptionResult result = null; if(testDoc!=null && StringUtils.isNotBlank(testDoc.getOriginalFilename())){ try { // 文件名 String fileName = testDoc.getOriginalFilename(); // 文件路径 String contextRealPath = PlatformConfigUtil.getString("UPLOADFILESAVEPATH"); String uuid = GenerateSequenceUtil.generateSequenceNo(); String extension = fileName .substring(fileName.lastIndexOf('.') + 1); String filePath = DateFormatUtils.format(new Date(), "yyyy/MM/dd") + File.separator + uuid + "." + extension; String fileAllPath = contextRealPath + filePath; InputStream inputStream = testDoc.getInputStream(); FileUtil.copyFile(inputStream, fileAllPath); result = new OptionResult(true, "测试资料上传成功"); Map<String,Object> map = new HashMap<String, Object>(); map.put("filePath", filePath); map.put("fileName", fileName); result.setTag(map); } catch (Exception e) { return new OptionResult(false, "测试资料上传失败").toJson(); } } return result.toJson(); }
ajaxfileupload.js
jQuery.extend({ createUploadIframe : function(id, uri) { var frameId = 'jUploadFrame' + id; var iframeHtml = '<iframe id="' + frameId + '" name="' + frameId + '" style="position:absolute; top:-9999px; left:-9999px"'; if (window.ActiveXObject) { if (typeof uri == 'boolean') { iframeHtml += ' src="' + 'javascript:false' + '"'; } else if (typeof uri == 'string') { iframeHtml += ' src="' + uri + '"'; } } iframeHtml += ' />'; jQuery(iframeHtml).appendTo(document.body); return jQuery('#' + frameId).get(0); }, createUploadForm : function(id, fileElementId, data) { var formId = 'jUploadForm' + id; var fileId = 'jUploadFile' + id; var form = jQuery('<form action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>'); if (data) { for ( var i in data) { if (data[i].name != null && data[i].value != null) { jQuery( '<input type="hidden" name="' + data[i].name + '" value="' + data[i].value + '" />').appendTo( form); } else { jQuery( '<input type="hidden" name="' + i + '" value="' + data[i] + '" />') .appendTo(form); } } } var oldElement = jQuery('#' + fileElementId); var newElement = jQuery(oldElement).clone(); jQuery(oldElement).attr('id', fileId); jQuery(oldElement).before(newElement); jQuery(oldElement).appendTo(form); jQuery(form).css('position', 'absolute'); jQuery(form).css('top', '-1200px'); jQuery(form).css('left', '-1200px'); jQuery(form).appendTo('body'); return form; }, ajaxFileUpload : function(s) { s = jQuery.extend({}, jQuery.ajaxSettings, s); var id = new Date().getTime() var form = jQuery.createUploadForm(id, s.fileElementId, (typeof (s.data) == 'undefined' ? false : s.data)); var io = jQuery.createUploadIframe(id, s.secureuri); var frameId = 'jUploadFrame' + id; var formId = 'jUploadForm' + id; if (s.global && !jQuery.active++) { jQuery.event.trigger("ajaxStart"); } var requestDone = false; var xml = {} if (s.global) jQuery.event.trigger("ajaxSend", [ xml, s ]); var uploadCallback = function(isTimeout) { var io = document.getElementById(frameId); try { if (io.contentWindow) { xml.responseText = io.contentWindow.document.body ? io.contentWindow.document.body.innerHTML : null; xml.responseXML = io.contentWindow.document.XMLDocument ? io.contentWindow.document.XMLDocument : io.contentWindow.document; } else if (io.contentDocument) { xml.responseText = io.contentDocument.document.body ? io.contentDocument.document.body.innerHTML : null; xml.responseXML = io.contentDocument.document.XMLDocument ? io.contentDocument.document.XMLDocument : io.contentDocument.document; } } catch (e) { jQuery.handleError(s, xml, null, e); } if (xml || isTimeout == "timeout") { requestDone = true; var status; try { status = isTimeout != "timeout" ? "success" : "error"; if (status != "error") { var data = jQuery.uploadHttpData(xml, s.dataType); if (s.success) s.success(data, status); if (s.global) jQuery.event.trigger("ajaxSuccess", [ xml, s ]); } else jQuery.handleError(s, xml, status); } catch (e) { status = "error"; jQuery.handleError(s, xml, status, e); } if (s.global) jQuery.event.trigger("ajaxComplete", [ xml, s ]); if (s.global && !--jQuery.active) jQuery.event.trigger("ajaxStop"); jQuery(io).unbind() setTimeout(function() { try { jQuery(io).remove(); jQuery(form).remove(); } catch (e) { jQuery.handleError(s, xml, null, e); } }, 100) xml = null } } if (s.timeout > 0) { setTimeout(function() { if (!requestDone) uploadCallback("timeout"); }, s.timeout); } try { var form = jQuery('#' + formId); jQuery(form).attr('action', s.url); jQuery(form).attr('method', 'POST'); jQuery(form).attr('target', frameId); if (form.encoding) { jQuery(form).attr('encoding', 'multipart/form-data'); } else { jQuery(form).attr('enctype', 'multipart/form-data'); } jQuery(form).submit(); } catch (e) { jQuery.handleError(s, xml, null, e); } jQuery('#' + frameId).load(uploadCallback); return { abort : function() { } }; }, uploadHttpData : function(r, type) { var data = !type; if (!type) data = r.responseText; if (type == "xml") data = r.responseXML; if (type == "script") jQuery.globalEval(data); if (type == "json") { data = r.responseText; var start = data.indexOf(">"); if (start != -1) { var end = data.indexOf("<", start + 1); if (end != -1) { data = data.substring(start + 1, end); } } eval("data = " + data); } if (type == "html") jQuery("<div>").html(data).evalScripts(); return data; }, handleError : function(s, xhr, status, e) { if (s.error) { s.error.call(s.context || s, xhr, status, e); } // Fire the global callback if (s.global) { (s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [ xhr, s, e ]); } } })
相关文章推荐
- freemarker+springMVC+ajaxfileupload实现异步图片上传(多张)
- AjaxFileUpload实现文件异步上传(AjaxFileUpload.js文件下载及参数介绍)
- SpringMVC+ajaxFileUpload 兼容IE浏览器实现异步上传图片
- springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
- springmvc + ajaxfileupload 实现异步上传文件(图片)
- AjaxFileUpload实现文件异步上传
- springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
- ajaxFileUpload实现异步文件上传
- jsp+servlet+ajaxfileupload.js 实现异步上传
- ajaxfileupload.js 实现异步上传图片
- ajaxfileupload.js 实现异步上传图片
- AjaxFileUpload.js实现异步上传文件
- jquery插件ajaxFileUpload实现异步上传文件案例
- ajaxfileupload.js实现文件异步上传
- asp.net 基于ajaxfileupload.js 实现文件异步上传
- freemarker+springMVC+ajaxfileupload实现异步图片上传(单张)
- 使用ajaxfileupload.js实现ajax异步上传
- 使用AjaxFileUpload.js实现文件异步上传
- asp.net+ajaxfileupload.js 实现文件异步上传代码分享
- springmvc + ajaxfileupload 实现异步上传文件(图片)