我试图使用Validator类检查上传文件的文件名是否与正则表达式匹配,但它似乎没有工作。我不确定它与之匹配的是什么,但它似乎不是文件名。
我所描述的文件名是:
Request::all()['file']->getClientOriginalName()
其中file
是上传文件变量的名称。
这是我测试的代码:
$input = Request::all();
$rules = array(
'file' => array('required', 'max:3000', 'regex:/^[\w\-\. ]+\.(zip|rar|gz|tar|tgz|tar\.Z|tbz2|tar\.lzma|bz2|tlz|7z)$/'),
);
$validation = Validator::make($input, $rules);
dump($input['file']);
if ($validation->fails())
{
return new Response($validation->errors()->first(), 400);
}
return new Response('success', 200);
这里是$input['file']
的价值转储:
UploadedFile {#27
-test: false
-originalName: "test.zip"
-mimeType: "application/octet-stream"
-size: 1376044
-error: 0
}
验证始终失败,错误为'The file format is invalid.'
。
当我使用/^.*$/
时,正则表达式似乎才成功。我还尝试了/^test.zip$/
和.*test.zip.*
,但这两个文件都失败了。