当前位置: 首页 > 知识库问答 >
问题:

如何使用$.ajax(jquery ajax)用Laravel上传图像

龙焱
2023-03-14

我试图通过AJAX Laravel(jquery AJAX)发送图像上传。我总是收到空的$_files数组。我在Form中添加了enctype=“multipart/form-data。当我通过Laravel的post方法发送数据时,我得到了我的数据。这不适用于jquery ajax。我得到的是除了$_文件之外我发送的其他东西的ajax响应。

<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

     ]);

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

共有1个答案

酆恩
2023-03-14

不能使用session_start()$_get。最好使用内置的sessionrequest类。此外,您不能通过GET请求传输数据(如图像)。用一个帖子。

那么你可以按照这里的答案

 类似资料:
  • 问题内容: 我正在尝试使用jQuery和Ajax函数上传图像,以及如何获取图像文件的所有详细信息,例如我们使用的php 这是我的代码 JS 控制者 视图 响应 C:\ fakepath \ Koala.jpg您没有选择要上传的文件。 请帮忙 问题答案: 您可以在html5中使用FormData API。 您的表格必须是: 然后jQuery: 然后,在控制器中,您将获得数组中的文件。

  • 问题内容: 我对jQuery和Ajax函数还比较陌生,但是过去几天一直在使用Ajax表单。我在尝试上传图像时遇到文件上传问题。在寻找资源时,我找不到任何有用的东西,因为它们似乎过于复杂,毫无意义,没有任何解释,这无助于我进一步学习。 我已经编写了以下代码来处理Ajax中的图片上传: 这向文件发送了一个请求,但是没有发送数据,基本上我的表单实际上是这样的: 似乎没有任何数据在标头中传递,我认为我将通

  • 问题内容: 我的laravel ajax应用程序出现问题, 我无法通过ajax POST上传图像/文件。 这是我的代码。 阿贾克斯 刀片模板… 控制器.. 路线.. 我的代码有什么错误? 我无法在laravel控制器中获取文件信息。 我该如何解决这个问题…? 问题答案: 有两点要更改: 从以下位置更改您的js文件: 至: 因为您想发送整个表格。 在您的html中: 在文件输入字段中添加名称 至:

  • 问题内容: 这次,我的问题是:我想使用文件输入上传图像,而不是刷新整个I网站,而是希望滚动一个简单的AJAX加载器,并在几秒钟后在同一页面中获得一个上传的图像。 。我尝试了google为我找到的一些脚本,但似乎没有使它们工作。 有人能够提供知识或在线帮助吗? 谢谢。 问题答案: 您可以轻松地使用ajaxupload将图像发送到服务器端,然后在函数成功返回时获取图像。

  • 问题内容: 我知道,关于这个主题的话题并非没有,但请耐心等待。我想使用Ajax或等效文件将文件上传到服务器。 我猜我配置ajax函数的方式存在问题,因为在调试模式下,除之外的所有数据均会返回。 我做错了什么吗? 问题答案: 回顾过去,较旧的答案不切实际,不建议使用。暂停整个Javascript以仅上传文件, 您可能会在上传过程中触发其他功能 。 如果您仅将JQuery用于,则我建议使用: Axio

  • 问题内容: 我有一个包含3个输入的表单: [1]用于状态更新的文本输入字段 [2]文件上传(用于图片) [3]文本输入字段,用于附加链接 用户根据自己想做什么在每个选项之间切换。例如,当选择[2]时,输入[1]和[3]被隐藏。 所有这些输入都包含在ID为的单个表单中。选项[1]和[3]通过Ajax发布到不同的控制器。 现在我的问题是选项[2],因为不可能使用jQuery ajax上传图像。 我见过