由ajax上传的文件没有在Laravel中的php控制器中获取数据

时间:2017-08-15 10:17:19

标签: php ajax laravel

我正在使用ajax在Laravel上传照片。 URL工作正常但数据未在控制器中接收功能。

HTML代码

<input type="file" id="photo_input">

Ajax / JQuery代码

$('#photo_input').change(function(){
var formData = new FormData('#photo_input');    
$.ajax({
       type:'POST',
       url: home_url+'/upload-image',
       data:formData,
       cache:false,
       enctype: 'multipart/form-data',
       contentType: false,
       processData: false,
       success:function(data){
               console.log("success");
                console.log(data);
            },
            error: function(data){
                console.log("error");
                console.log(data);
            }
        });
    });


控制器中的PHP代码

public function uploadImage(){
  $data = Input::all();
  print_r($data);
}


来自控制器中的功能的响应

array(
);

我没有在html中使用<form>标记,我想直接上传它。我需要添加<form>代码吗? 有什么遗失的吗?

2 个答案:

答案 0 :(得分:1)

$("#example-form").submit(function(){

var formData = new FormData($(this)[0]);
    $.ajax({
        data: formData
    });
});

答案 1 :(得分:0)

这样做:

<form method="POST" id="photoform" enctype="multipart/form-data">
<input type="file" id="photo_input">
</form>

因此,ajax请求应该像这样改变:

$('#photoform').submit(function(){
var fileupload = $('#photo_input').val();    
$.ajax({
       type:'POST',
       url: home_url+'/upload-image',
       data:{
           file: fileupload,
       },
       cache:false,
       enctype: 'multipart/form-data',
       contentType: false,
       processData: false,
       success:function(data){
               console.log("success");
                console.log(data);
            },
            error: function(data){
                console.log("error");
                console.log(data);
            }
        });
    });