TP3.2、tp3.2 thinkphp3.2 ajax文件上传

注意:在linux要给上传文件的文件夹读写权限

这种写法也很好
 var form=document.getElementById("form1");
    var fd =new FormData(form);
    var attach_url = '';
    var attach = '';
    $.ajax({
      url: "{:U('Task/upload')}",
       type: "POST",
       data: fd,
       async: false,
       processData: false,  // 告诉jQuery不要去处理发送的数据
       contentType: false,   // 告诉jQuery不要去设置Content-Type请求头
       success: function(r,status,xhr){
        attach_url = r.data.url;
        attach = r.data.name;
        console.log(r);
      }
    });
一.html代码
(推荐这个)
  function uploads(){
        //new对象处理文件上传表单提交
        //‘#form1’是form的id,[0]是文件上传的下标,
        //我这里只有一个input type=file所以就是[0]
        //这个[0]指的是第一个文件上传表单,不包含普通的input表单
        var data = new FormData($('#form')[0]);
          $.ajax({
            url: "{:U('Article/upload')}",//文件地址
            type: 'POST',
            cache: false,//关闭缓存
            data: data,

           //processData 默认为false,当设置为true的时候,
           //jQuery ajax 提交的时候不会序列化 data,而是直接使用data
           //processData设置为false。因为data值是FormData对象,不需要对数据做处理。

            processData: false,

          //contentType设置为false。因为是由
表单构造的FormData对象, //且已经声明了属性enctype="multipart/form-data",所以这里设置为false contentType: false, success:function(data){ $('#cover').val(data.file_url); alert(data.msg); } });
function uploads(id){
        //new对象处理文件上传表单提交
        //‘#form1’是form的id,[0]是文件上传的下标,
        //我这里只有一个input type=file所以就是[0]
        //这个[0]指的是第一个文件上传表单,不包含普通的input表单
        var data = new FormData();
//第一个参数是input的ID可以自定义,第二个也是input的ID不是hiform的
        data.append(id,$("#"+id)[0].files[0]);
          $.ajax({
            url: "{:U('upload')}",//文件地址
            type: 'POST',
            cache: false,//关闭缓存
            data: data,

           //processData 默认为false,当设置为true的时候,
           //jQuery ajax 提交的时候不会序列化 data,而是直接使用data
           //processData设置为false。因为data值是FormData对象,不需要对数据做处理。

            processData: false,

          //contentType设置为false。因为是由表单构造的FormData对象,
          //且已经声明了属性enctype="multipart/form-data",所以这里设置为false

            contentType: false,
            success:function(r){
              // var url=$('#fileURL').val(data.fileURL);
              console.log(r);
              alert(r.msg);
         }
      });
    }
public function upload(){
 		 if(IS_POST){
      	$file = $_FILES;
     	 foreach ($file as $k => $v) {
          //生成唯一的ID
          $filename = md5(uniqid(microtime(true),true));
          if($file[$k]['error']==0){
            $config=array(
                'maxSize'=>70000000,
                'exts'=>array('jpg','jpeg','png','gif'),
                'rootPath'=>'./uploads/',
                //保存的文件名
                'saveName'   =>$filename,
                //开启子目录
                'subName'    =>array('date','Ymd'),
            );
            $upload=new \Think\Upload($config);
            $info=$upload->upload();
            if($info){
              //域名
              $ym='http://yun.zjwhtb.net';
              //根目录
              $rootPath=substr($config['rootPath'],1);
              //文件保存路径
              $savepath=$info[$k]['savepath'];
              //文件名称
              $savename=$info[$k]['savename'];
              $fileUrl = $ym.$rootPath.$savepath.$savename;
                $data['msg']='文件上传成功';
                $data['fileUrl']=$fileUrl;
                // dump($data);die;
                $this->ajaxReturn($data);
            }else{
                $data['msg']=$upload->getError();
                // dump($data);die;
                $this->ajaxReturn($data);
            }
          
          }else{
            $data['msg']='文件上传错误';
             // dump($data);die;
            
            $this->ajaxReturn($data);
          }
      }

    }else{
       $this->display();

    }
  }
TP3.2、tp3.2 thinkphp3.2 ajax文件上传_第1张图片



你可能感兴趣的:(TP3.2、tp3.2 thinkphp3.2 ajax文件上传)