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

3

如何获取上传失败的文件名并将其传递给验证错误消息?例如:"The file.0 must be 1024 kilobytes." 可以改为 "The failed-file-sample.jpg must be 1024 kilobytes."

以下是示例代码:

$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
);

1
如果您正在使用验证,只需在验证之前加入此行代码:$request->file_field_name->getClientOriginalName(); - Salman Zafar
@SalmanZafar - 你是说像 $request->file('file_field_name')->getClientOriginalName() 这样的吗?但这个方法并没有起作用。抱歉,我对这方面还很陌生。 - Victor
$request->file('file_field_name')->getClientOriginalName(); 或 $request->file_field_name->getClientOriginalName(); - Salman Zafar
@SalmanZafar 对不起,我有点困惑。你如何循环获取文件名,然后集中到自定义错误消息中? - Victor
也许这个可以帮助你,而不用使用foreach https://dev59.com/qFkS5IYBdhLWcg3wiXMj - Salman Zafar
显示剩余3条评论
1个回答

2

使用:

$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()”,意思是程序试图调用一个不存在的方法或者属性。 - Victor
我更新了你的答案。现在我的验证功能正常了...谢谢! - Victor
这个答案是正确的,但它显示了=>语法错误。 - Baby Babai
同时,可以将文件名显示为 uploads.0 - Baby Babai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接