使用formdata的多文件上传 废话少说 直接上代码
1 JS部分
//选择文件后的处理 function handleFileSelect() { var exerciseid=$("#exerciseid").val(); var workerid=$("#workerid").val(); var pic_kind=$("#pic_kind").val(); //var pic_file = $('#pic_file')[0].files[0]; var formData = new FormData(); //formData.append("pic_file",$('#pic_file')[0].files[0]); var filesize=$('#pic_file')[0].files.size; alert(filesize); for(var i=0; i<$('#pic_file')[0].files.length;i++){ alert($('#pic_file')[0].files[i].size); formData.append('file[]', $('#pic_file')[0].files[i]); } formData.append("pic_kind", pic_kind); formData.append("exerciseid", exerciseid); formData.append("workerid", workerid); $.ajax({ url: "{:U('Publishset/newUpload')}", dataType:'json', type:'POST', data: formData, processData : false, // 使数据不做处理 contentType : false, // 不要设置Content-Type请求头 xhr: function(){ //获取ajaxSettings中的xhr对象,为它的upload属性绑定progress事件的处理函数 myXhr = $.ajaxSettings.xhr(); if(myXhr.upload){ //检查upload属性是否存在 //绑定progress事件的回调函数 myXhr.upload.addEventListener('progress',aprogressHandlingFunction, false); } return myXhr; //xhr对象返回给jQuery使用 }, success: function(data){ $('#ap').val(0); $('#aprogress').html(''); showExerciseImage(exerciseid); //if (data) { // alert('上传成功!'); //} }, error:function(response){ console.log(response); } }); } //上传进度回调函数: function aprogressHandlingFunction(e) { if (e.lengthComputable) { $('#ap').attr({value : e.loaded, max : e.total}); //更新数据到进度条 var percent = e.loaded/e.total*100; $('#aprogress').html(percent.toFixed(2) + "%"); } }
2 html 部分
<input class="file" id="pic_file" multiple type="file" οnchange="handleFileSelect(event)" style="display:none;">
3 PHP部分
public function newUpload() { //上传配置 $upload = new \Think\Upload();// 实例化上传类 $upload->maxSize=3145728 ;// 设置附件上传大小 $upload->exts=array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型 $upload->rootPath='./uploads/inittestimg/'; // 设置附件上传根目录 $upload->savePath=''; // 设置附件上传(子)目录 //上传文件 $info=$upload->upload(); //参数获取 $exerciseid=$_POST["exerciseid"]; $kind=$_POST['pic_kind']; $workerid=$_POST['workerid']; if(!$info) {// 上传错误提示错误信息 $this->error($upload->getError()); }else{// 上传成功 获取上传文件信息 $images = M('initimages'); //循环入库 foreach($info as $file){ $imgarr['exerciseid']=$exerciseid; $imgarr['src']='./uploads/inittestimg/'.$file['savepath'].$file['savename']; $imgarr['kind']=$kind; $imgarr['lastreadtime']=time(); //文件名 //$imgarr['orderid']=str_replace(strrchr($info['pic_file']['name'], "."),"",$info['pic_file']['name']); $imgarr['orderid']=$file['name']; $images->add($imgarr); } } echo 1; }