thinkphp3.2.3使用formdata的多文件上传

使用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 部分

 class="file" id="pic_file" multiple type="file" onchange="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;
  }
   

 

你可能感兴趣的:(thinkphp3.2.3使用formdata的多文件上传)