ajax批量上传
Input表单写法: <input type="file" multiple="multiple" accept="image/jpeg" name="newPhoto" value="" id="newPhoto">multiple选项用于声明是批量上传 accept声明只接收jpg格式的图片,其他格式的文件在选项卡中显示不出来
来自:http://www.cnblogs.com/kissdodog/archive/2012/12/15/2819025.html 一、ajaxFileUpload是一个异步上传文件的jQuery插件。 传一个不知道什么版本的上来,以后不用到处找了。 语法:$.ajaxFileUpload([options]) options参数说明: 1、url 上传处理程序地址。 错误提示: 1,SyntaxError: missing ; before statement错误 使用方法: 引入jQuery与ajaxFileUpload插件。注意先后顺序,这个不用说了,所有的插件都是这样。 <script src="jquery-1.7.1.js" type="text/javascript"></script> <script src="ajaxfileupload.js" type="text/javascript"></script> 一个例子: <html> <head> <script src="/jquery-1.7.1.js" type="text/javascript"></script> <script src="/ajaxfileupload.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { $(":button").click(function () { if ($("#file1").val().length > 0) { ajaxFileUpload(); } else { alert("请选择图片"); } }) }) function ajaxFileUpload() { $.ajaxFileUpload ( { url: '/Home/Upload',//用于文件上传的服务器端请求地址 secureuri: false,//一般设置为false fileElementId: 'file1',//文件上传空间的id属性 <input type="file" id="file" name="file" /> dataType: 'HTML',//返回值类型 一般设置为json success: function (data,status) //服务器成功响应处理函数 { alert(data); $("#img1").attr("src",data); if (typeof (data.error) != 'undefined') { if (data.error != '') { alert(data.error); } else { alert(data.msg); } } },error: function (data,status,e)//服务器响应失败处理函数 { alert(e); } } ) return false; } </script> </head> <body> <p><input type="file" id="file1" name="file" /></p> <input type="button" value="上传" /> <p><img id="img1" alt="上传成功啦" src="" /></p> </body> </html> 我的批量上传: ajaxFileUpload插件原理其实构建了一个表单form,里面很多file用于上传:最后submit()表单:见下面部分源码 var form = jQuery('<form action="" method="POST" name="'+ formId + '" id="' + formId + '" enctype="multipart/form-data"></form>'); if (data) { for ( var i in data) { jQuery('<input type="hidden" name="' + i + '" value="' + data[i] + '" />').appendTo(form); } } 提交函数: function uploadHeadPhoto(){ var userId = $("#userId",navTab.getCurrentPanel()).val();; if (userId == null) { alertMsg.error("请选择用户ID"); //dwz框架 return; } //必须上传图片,才能注册 var newHeadPhoto = $("#newPhoto",navTab.getCurrentPanel()).val(); if (newHeadPhoto != null && newHeadPhoto != '') { if (newHeadPhoto.toLowerCase().indexOf('.jpg') < 0) { alertMsg.error("请上传JPG文件"); return; }; } else { alertMsg.error('请添加头像照片'); return; } var albumId = $("#albumId",navTab.getCurrentPanel()).val(); if (albumId == null || albumId=='') { alertMsg.error("头像所属相册编号为空"); return; } //加载缓冲效果 //对应html页面的:<img id="loading" src="../images/loading.gif" style="display:none; width: 17px;"> $("#loading",navTab.getCurrentPanel()).ajaxStart(function() { $(this).show(); }).ajaxComplete(function() { $(this).hide(); }); $.ajaxFileUpload({ url : 'uploadMultiHeadPhoto.do',//服务器url data : { "albumId" : albumId,"userId" : userId },secureuri : false,fileElementId : 'newPhoto',dataType : 'json',success : function(data,status) { var photoList = eval("(" + data.message + ")"); var additionalRecord = ''; //将解析出来的图像上传后的url,上传状态做显示 for(var i=0 ;i<photoList.length;i++){ var record = "<img src='" + photoList[i].photoName + "' alt='" + photoList[i].id + "' id='headPhoto" + photoList[i].id + "' onclick='selectHeadPhoto(this," + photoList[i].id +")' />"; additionalRecord += record; } //加载到该显示的地方 var headPhotoListTD=$("#headPhotoList",navTab.getCurrentPanel()); var orignalRecord = headPhotoListTD.html(); headPhotoListTD.html(orignalRecord + additionalRecord); },error : function(data,e) { alertMsg.info(e); } }); }
@RequestMapping(value = "uploadMultiHeadPhoto.do") @ResponseBody public AjaxResponseBean uploadMultiHeadPhoto( @ModelAttribute("userInfoBean") UserInfoBean userBean,HttpServletRequest request,HttpServletResponse response,ModelMap map) { UserInfoBean: private List<MultipartFile> newPhoto; 保存图片到本地并返回List<File> public static List<File> saveFileList(List<MultipartFile> multipartFiles,String parent,String extend) throws Exception { List<File> files = new ArrayList<>(); if(parent == null){ // 保存文件的父目录 parent = makeParentDirectory(); } if (multipartFiles == null || multipartFiles.size()<=0) { return null; } for(MultipartFile multipartFile : multipartFiles){ String originalFilename = multipartFile.getOriginalFilename(); if(StringUtil.isNotBlank(originalFilename)){ int index = originalFilename.lastIndexOf("."); if(index > 0){ extend = originalFilename.substring(index); } } // 生成一个随机数,保证同一时间 也不会生成相同的文件名 int temp = (int)Math.random() *1000; String fileName = MD5.getMD5(originalFilename + temp + DateUtil.dateToString(new Date(),Format.YYYY_MM_DD_HH_MM_SS_SSS)); String savePath = parent +File.separator + fileName + extend; File localFile = new File(savePath); try { multipartFile.transferTo(localFile); files.add(localFile); } catch (IllegalStateException e) { throw e; } catch (IOException e) { throw e; } } return files; } 可以将List<File>再上传到图片服务器 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |