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

Laravel批量上传:如何获取验证失败文件的文件名?

问题分析与解决

你的代码存在两个核心问题,导致无法替换错误消息里的字段标识为文件名:

  1. 错误的消息数组结构:你把$validationArray包裹进了另一个数组$messages = [$validationArray];,形成了二维数组,Laravel无法正确解析对应的字段规则消息,因此默认显示字段名uploads.0。
  2. 缺少mimes规则的自定义消息:你只给image规则定义了带文件名的提示,mimes规则仍使用默认模板,所以会继续出现uploads.0的字样。

修正后的代码

$messages = [];
if($request->hasfile('uploads')){
    foreach ($request->file('uploads') as $key => $file) {
        $filename = $file->getClientOriginalName();
        // 为image规则绑定带文件名的错误消息
        $messages["uploads.$key.image"] = "The $filename must be an image.";
        // 为mimes规则绑定带文件名的错误消息
        $messages["uploads.$key.mimes"] = "The $filename must be a file of type: jpg, jpeg, png.";
    }
}

$request->validate([
    'uploads' => 'required|array',
    'uploads.*' => 'image|mimes:jpg,jpeg,png'
], $messages);

修正说明

  • 直接将每个字段规则的消息存入$messages一维数组,避免嵌套结构,确保Laravel能正确匹配字段与对应规则的自定义提示。
  • 同时为mimes规则添加自定义消息,让两个验证规则的错误提示都能显示对应的文件名,而非系统默认的字段标识。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:30:51