我使用Lumen 5.7创建了一个Web服务。
我正在发送一个文件数组,但我无法使用常用的方法验证它在Laravel / Lumen上验证数组:
public function create(Request $request) {
$this->validate($request, [
'phone_number' => 'required',
'latitude' => 'required',
'longitude' => 'required',
'status' => 'required', Rule::in(['pre','authorized','archived']),
'photos' => 'required',
'photos.*' => 'mimes:jpg,jpeg,png,bmp'
]);
}
它似乎忽略了我在那里定义的photos
规则。如果我做了d($request->all())
,我得到了:
这意味着文件到达服务器,但无法验证它们。
这是我用来上传文件的html代码:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<form class="" action="terrains" method="post" enctype="multipart/form-data">
<input type="file" name="photos[]" value="" multiple>
<input type="submit" name="" value="Send">
</form>
</body>
</html>
我也用Postman测试了它:
如您所见,其他验证正在正确执行,但照片除外。
我需要验证,原因有以下几点:
我只会评论我添加的新字段,因为您已经了解了其他字段的用途。所以,进行以下编辑。
你的表格:
<form class="" action="terrains" method="post" enctype="multipart/form-data">
<input type="text" name="phone_number" placeholder="Phone Number">
<input type="text" name="longitude" placeholder="Longitude">
<input type="text" name="latitude" placeholder="Latitude">
<input type="text" name="status" placeholder="Status">
<input type="file" name="photos[]" value="" multiple>
<input type="submit" name="" value="Send">
</form>
验证:
public function create(Request $request) {
$this->validate($request, [
'phone_number' => 'required', // required translates to the fact that the field must not be empty.
'latitude' => 'required',
'longitude' => 'required',
'status' => 'required', Rule::in(['pre','authorized','archived']),
'photos' => 'required',
'photos.*' => 'image|max:5000|mimes:jpg,jpeg,png,bmp' // image = Must be an image, max = The image size must not be bigger than the specified size (5MB)
]);
}
它应该是这样的
public function create(Request $request) {
$this->validate($request, [
'phone_number' => 'required',
'latitude' => 'required',
'longitude' => 'required',
'status' => 'required', Rule::in(['pre','authorized','archived']),
'photos.*' => 'required|mimes:jpg,jpeg,png,bmp'
]);
}