【问题标题】:Uploaded file by ajax not getting data in php controller in Laravelajax上传的文件没有在Laravel的php控制器中获取数据
【发布时间】:2018-01-23 06:13:33
【问题描述】:

我正在使用 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中使用&lt;form&gt;标签,我想直接上传。我需要添加&lt;form&gt; 标签吗? 有什么遗漏的吗?

【问题讨论】:

  • @SagarGautam 我没有为此使用表单,我需要为此添加
    标签吗?
  • 是的,为输入创建一个表单并在提交时执行 ajax 请求:
  • @Omkar 看到这个问题。可能会帮助你stackoverflow.com/questions/166221/…
  • 是的,你也可以在没有表格的情况下做到这一点!

标签: php ajax laravel


【解决方案1】:
$("#example-form").submit(function(){

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

【讨论】:

【解决方案2】:

这样做:

<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);
            }
        });
    });

【讨论】:

  • 您也可以按照此 url stackoverflow.com/questions/166221/… 中讨论的形式在没有表单的情况下进行操作@
  • 您的代码无法正常工作,因为这不是使用 ajax 上传文件的方法。您将不得不使用 formdata 来上传文件。
  • @Farsay 它肯定会起作用。我就是这样用过的。
猜你喜欢
  • 1970-01-01
  • 2018-08-25
  • 2016-11-25
  • 2020-09-24
  • 2019-01-25
  • 2019-09-13
  • 2015-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多