【问题标题】:How to upload image with Laravel using $.ajax (jquery ajax)如何使用 $.ajax (jquery ajax) 使用 Laravel 上传图片
【发布时间】:2017-11-04 15:27:41
【问题描述】:

我正在尝试通过 AJAX Laravel(jquery ajax) 发送图像上传。我总是收到空的 $_FILES 数组。我在表单中添加了 enctype="multipart/form-data。当我通过 Laravel 的 post 方法发送数据时,我得到了我的数据。这不适用于 jquery ajax。我正在收到我发送的其他东西的 ajax 响应$_FILES。

我的查看文件

<form action="" name="myForm_comment" id="myForm" method="post" role="form" enctype="multipart/form-data">

    <input type="hidden" name="snap" id="snap" value="">
    <input type="hidden" name="op" id="op" value="">
    <input type="hidden" name="ucname" id="name" value="{{$fname}}&nbsp;{{$lname}}">


    <textarea rows="3" class="form-control" placeholder="Add a public comment" style="padding:10px;" name="ucmsg" id="textmsg" required></textarea>

    <input type="file" id="imgInp" name="imgInp"/>
    <img id="blah" src="" alt="" />

    <div class="row">
        <div class="col-xs-1 col-xs-offset-8 text-center">
            <label for="imgInp"><i class="fa fa-camera-retro" aria-hidden="true"></i></label>
        </div>
        <!-- <div class="col-xs-1 text-center">
            <label for="imgInp"><i class="fa fa-smile-o" aria-hidden="true"></i></label>
        </div> -->
        <div class="col-md-2">
            <input type="submit" id ="cmnt_btn" class="btn btn-primary pull-right" name="commentSubmit" value="Comment" onclick="commentFunction();">
        </div>

    </div>
</form>

<script>
    $(document).ready(function(){
        //comment database management
        $("#cmnt_btn").click(function(){
            var name = $("#name").val();
            var textmsg = $("#textmsg").val();
            var picture = $("#imgInp").val();
            $.ajax({
                url:'comment_dbm',
                type:'get',
                data:{
                    ucname:name,
                    ucmsg:textmsg,
                    ucpic:picture,
                },
                success:function(response)
                {
                    alert(response);
                }
            });
        });
    });
</script>

我的控制器

<?php

namespace App\Http\Controllers;

use App\User;
use App\Http\Controllers\Controller;
use DB;
use Illuminate\Http\Request;
use Illuminate\Routing\Redirector;
use Session;
use Illuminate\Contracts\Validation\Validator;
use Mail;


session_start();

class CommentController extends Controller
{
    public function comment_dbm()
    {

       echo $ucname = $_GET['ucname'];
       $ucmsg = $_GET['ucmsg'];
       $cmnt_pic = $_GET['cmnt_pic'];       //I am getting these values response

       print_r($_FILES);    // getting empty array

     ]);

    }
}

我的路由文件(即在 web.php 中)

Route::get('/comment_dbm', [
    'uses' => 'CommentController@comment_dbm',
    'as' => 'comment_dbm'
]);

【问题讨论】:

标签: php ajax laravel laravel-5


【解决方案1】:

您不得使用session_start()$_GET。更好地使用内置的SessionRequest 类。此外,您不能通过 GET 请求传输数据(如图像)。为它使用一个 POST。

那你可以关注答案here

【讨论】:

    猜你喜欢
    • 2021-07-14
    • 2020-07-04
    • 1970-01-01
    • 2021-09-05
    • 2017-06-04
    • 1970-01-01
    • 2020-01-26
    • 2015-09-01
    相关资源
    最近更新 更多