Laravel Regex验证上传的文件名

时间:2015-05-22 00:13:48

标签: regex laravel laravel-5 laravel-validation

我试图使用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.*,但这两个文件都失败了。

0 个答案:

没有答案