请求参数为空,在提交带有图像的表单数据 AJAX 后

Posted

技术标签:

【中文标题】请求参数为空,在提交带有图像的表单数据 AJAX 后【英文标题】:Request parameter is null , after submitting formdata AJAX with image 【发布时间】:2021-12-01 12:22:09 【问题描述】:

重要!这仅发生在托管服务器中。本地主机上传没问题


我正在尝试使用 AJAX 将我的图像上传到我的 laravel 控制器。通过使用dd($request),请求为空

javascript 代码:

function addLogo() 
        console.log('test');
        $('#logoinvois .msg').text('');
        $('#logoinvois .msg').hide();

        // var form = $('#form_invois_logo')[0];
        // var formData = new FormData(form);

        var formData = new FormData();
        var file_data = $('#logo_invois').prop('files')[0];
        formData.append('logo_invois', file_data);

        for (var pair of formData.entries()) 
            console.log(pair[0] + ', ' + pair[1]);
        

        // return;
        $.ajax(
            url: '/invois/add_logo',
            type: 'post',
            data: formData,
            cache: false,
            processData: false,
            contentType: false,
            enctype: 'multipart/form-data',
            success: function(data) 
                console.log(data););

Laravel 控制器:

public function save_logo(Request $request)


    dd($request->all());
    $request->validate(
        [
            'logo_invois' => 'required|mimes:jpeg,jpg,png|max:500',
        ],
        [
            'logo_invois.required' => 'Pilih gambar',
            'logo_invois.mimes' => 'Jenis fail hanya jpeg,jpg,png',
            'logo_invois.max' => 'Saiz yang dibenarkan adalah kurang 500KB',

        ]
    );

【问题讨论】:

add_logo 路由是否指向 save_logo 控制器函数? 是的,正如我所提到的,在 localhost 中上传图片是正常的,但是当我在托管服务器上部署 Web 应用程序时出现问题 好吧,与其依赖对整个基础架构了解有限信息的随机人员,不如自己进行调试并通过查看日志和跟踪面包屑来找出问题所在。 Laravel 有日志,你的服务器也应该有。有时你只需要自己想办法。乍一看,您在帖子中显示的所有内容看起来都没有问题。你甚至说它在本地工作,所以弄清楚你的本地实例和生产实例之间有什么不同。 从控制器返回值到 console.log 显示消息表明没有提交图像 也许有人遇到这个问题并解决它 【参考方案1】:

将我的路由上传回托管服务器,它解决了问题

【讨论】:

我听不懂你在说什么 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于请求参数为空,在提交带有图像的表单数据 AJAX 后的主要内容,如果未能解决你的问题,请参考以下文章

AJAX 请求正文为空(无 jQuery)

提交常规表单之前的 AJAX 请求

HTML中ajax表单提交CSRF保护

ajax 中参数带有html格式 文本编辑器提交form表单时异常

jQuery ajax post提交本页面处理,为啥提交后URL还携带参数

okhttppost表单请求参数为null过滤