You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel表单未传数据,提交出现419页面过期错误求助

解决Laravel文件上传时的419 Page Expired错误

老兄,你遇到的这个419页面过期错误在Laravel里太常见了,基本都是CSRF验证或者表单属性的小失误导致的,我帮你揪出几个关键问题:

1. CSRF令牌字段名称错误

你的表单里隐藏的CSRF令牌字段写的是name="_Token",但Laravel的CSRF验证默认只认小写的_token,大小写不匹配会直接导致令牌验证失败,触发419错误。

2. 表单enctype属性拼写错误

你把表单的enctype写成了nctype——少了个开头的'e'!这个属性是告诉服务器表单包含文件数据的关键,拼写错误会让服务器无法正确识别请求类型,也会间接影响请求的合法性。

3. 文件输入框缺少name属性(额外修复点)

虽然这不是419的直接原因,但你的文件<input>没有设置name属性,就算表单能提交,控制器里也拿不到上传的文件数据,这是实现文件上传的必要配置。


修正后的表单代码

<form action="testUpload" enctype='multipart/form-data' method='POST'>
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    <div class="col-md-12" style="margin-top: 25px">
        <div class="input-group mb-3">
            <div class="custom-file">
                <!-- 添加了name属性 -->
                <input type="file" class="custom-file-input" id="inputGroupFile01" name="upload_file">
                <label class="custom-file-label" id="uploadFile" for="inputGroupFile01">Choose file</label>
            </div>
        </div>
        <input type="submit" class="btn btn-success" />
    </div>
</form>

优化后的控制器代码(适配文件上传)

原来的Request::all()无法正确获取文件对象,建议改成专门的文件处理逻辑:

public function upload()
{
    // 检查是否有文件被上传
    if(request()->hasFile('upload_file')) {
        $file = request()->file('upload_file');
        
        // 这里可以添加文件验证(比如大小、类型)和存储逻辑,示例:
        // $file->validate([
        //     'upload_file' => 'file|max:2048|mimes:jpg,png,pdf'
        // ]);
        // $storagePath = $file->store('uploads');
        
        return response()->json(['success' => true, 'filename' => $file->getClientOriginalName()]);
    }
    
    return response()->json(['success' => false, 'message' => '未检测到上传文件']);
}

修复这几个问题后,419错误应该就能解决,同时文件上传的基础功能也能正常运行啦!

内容的提问来源于stack exchange,提问作者Scott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 20:02:38