laravel用ajax不能上传图片

我之前用表单可以上传成功 但是用ajax就不行 后台代码没有动 大家帮我看看是不是前端代码写的不对吗?

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript">
       function ajax(url,data,funsucc){
            var oAjax=new XMLHttpRequest();
            oAjax.open('post',url,true);                   
            oAjax.setRequestHeader("Content-Type","multipart/form-data");
            var form=new FormData();
            form.append("pic",data);
            oAjax.send(form);  
            oAjax.onreadystatechange=function(){
              if(oAjax.readyState==4){
                if(oAjax.status==200){
                  funsucc(oAjax.responseText);
                }
              }
            }
        }
    </script>
    <script type="text/javascript">
        window.onload=function(){
             var oBtn1=document.getElementById('btn1');
             var oPic=document.getElementById('pic');
             oBtn1.onclick=function(){
                  oV1=oPic;
                  ajax("/test",oV1,function(str){
                    
                  });
                }
        }
    </script>
</head>
<body>
       <input type="file" id="pic"/>
       <input type="submit" id="btn1" value="提交"/>
</body>
</html>
$file= $request->file('pic');
        if ($request->hasFile('pic')){
            $path='./uploads/'.date('Ymd');
            foreach($file as $v){
                $extension=$v->getClientOriginalExtension();
                $filename=rand(100,999).time().rand(100,999).'.'.$extension;
                $v->move($path,$filename);
                $path2=trim($path.'/'.$filename,'.');
                DB::table('photo')->insert(array('id'=>11,'path'=>$path2,'time'=>time()));
            }
        }
return view('test');
阅读 2.3k
1 个回答

FormData对象进行append的应该是file对象,不是一个input

ajax("/test",oV1.files[0],function(str){
});

此外,最好是先绑定监听,然后再send

function ajax(url,data,funsucc){
    var oAjax=new XMLHttpRequest();
    oAjax.open('post',url,true);                   
    oAjax.setRequestHeader("Content-Type","multipart/form-data");
    var form=new FormData();
    form.append("pic",data);
    oAjax.onreadystatechange=function(){
      if(oAjax.readyState==4){
        if(oAjax.status==200){
          funsucc(oAjax.responseText);
        }
      }
    }
    oAjax.send(form);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题