在 Laravel 5.4 中获取上传失败文件的文件名

Posted

技术标签:

【中文标题】在 Laravel 5.4 中获取上传失败文件的文件名【英文标题】:Get filename of failed uploaded file in Laravel 5.4 【发布时间】:2019-01-08 18:27:38 【问题描述】:

如何获取上传失败文件的文件名并将其传递给验证错误消息?例如:“file.0 必须为 1024 KB。”就像“failed-file-sample.jpg 必须是 1024 KB。”

这是示例代码安排:

$messages = [
    'mimes' => 'File(s) must be of type: :values.',
    'size'   => 'The ' .  $request->file('file_field')->getClientOriginalName() . ' must be :size kilobytes.'
];

$this->validate(
    request(), 
    ['file_field' => 'bail|required|mimes:gif,jpg,jpeg,png|size:1024'], 
    $messages
);

【问题讨论】:

只需使用 $request->file_field_name->getClientOriginalName();如果您正在使用验证,只需在验证之前添加这一行 @SalmanZafar - 你的意思是像 $request->file('file_field_name')->getClientOriginalName()?它不工作。抱歉,我是新手 两者都可以。你可以使用其中任何一个。$request->file('file_field_name')->getClientOriginalName();或 $request->file_field_name->getClientOriginalName(); 哦!它适用于单个文件上传。但如果多个文件上传,它会返回 FatalThrowableError... 我还编辑了我的原始帖子以显示位代码 对多张图片使用 foreach 循环 【参考方案1】:

用途:

$validationArray = [];
foreach ($request->file('file_field') as $key => $file) 
    $validationArray['file_field.'.$key.'.size'] => 'The ' .  $file->getClientOriginalName() . ' must be 1024 kilobytes.'; 

$messages = [
    'file_field.*.mimes' => 'File(s) must be of type: :values.',
     $validationArray
];
$this->validate(
    $request, 
    [
        'file_field' => 'bail|required|array',
         'file_field.*' => 'mimes:gif,jpg,jpeg,png|size:1024'
    ], 
$messages);

【讨论】:

这给了我“调用数组上的成员函数 getClientOriginalName()” 我更新了你的答案。现在我的验证正在工作......谢谢!

以上是关于在 Laravel 5.4 中获取上传失败文件的文件名的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.4 |如何使用引导文件输入上传图像?

Error Laravel 5.4以.bin格式上传.docs

上传文件为空 Laravel 5.4

Laravel 5.4 显示上传的图片问题

Laravel 5.4:动态验证规则

LARAVEL 在文件上传中从 isValid 获取错误