Как проверить $ _FILES с помощью библиотеки Respect Validation

я использую Уважение Валидация попытаться проверить загрузку файла. Проблема, которую я имею, состоит в том, что проверка всегда терпит неудачу, даже если правильное изображение было загружено.

Вот мой код:

public function updateProfilePicture(Request $request, Response $response, $args = []) {

$files = $request->getUploadedFiles();

if(empty($files['image'])) {
throw new AppException('Invalid image');
}

// Validate image
$validator = v::key('image', v::image());

try {
$validator->assert($files);
// $validator->assert($_FILES);
} catch(NestedValidationException $e) {
throw new AppException($e->getMessage());
}
}

Я получаю ошибку:

{
"status": false,
"data": null,
"message": "All of the required rules must pass for { \"image\": { \"name\": \"twitter.png\", \"type\": \"image/png\", \"tmp_name\": \"/private/var/folders/ry/kgy3g6v96s71jg3htn6r5rt80000gn/T/php7x3P6w\", \"error\": 0, \"size\": 210955 } }"}

Как предложено в комментариях, я пытался использовать $validator->assert($files['image']);, Это не сработало и выдает следующую ошибку:

{
"status": false,
"data": null,
"message": "All of the required rules must pass for `[object] (Slim\\Http\\UploadedFile: { \"file\": \"/private/var/folders/ry/kgy3g6v96s71jg3htn6r5rt80000gn/T/phppJn1Uw\" })`"}

$files переменная содержит:

array(1) {
["image"]=>
object(Slim\Http\UploadedFile)#120 (8) {
["file"]=>
string(66) "/private/var/folders/ry/kgy3g6v96s71jg3htn6r5rt80000gn/T/php8sPpkD"["name":protected]=>
string(11) "twitter.png"["type":protected]=>
string(9) "image/png"["size":protected]=>
int(210955)
["error":protected]=>
int(0)
["sapi":protected]=>
bool(true)
["stream":protected]=>
NULL
["moved":protected]=>
bool(false)
}
}

А также $_FILES содержит:

array(1) {
["image"]=>
array(5) {
["name"]=>
string(11) "twitter.png"["type"]=>
string(9) "image/png"["tmp_name"]=>
string(66) "/private/var/folders/ry/kgy3g6v96s71jg3htn6r5rt80000gn/T/phpm0Gv35"["error"]=>
int(0)
["size"]=>
int(210955)
}
}

Как предложено в комментарии, я пытался $validator->assert($_FILES['image']['tmp_name']); и получите следующую ошибку:

{
"status": false,
"data": null,
"message": "All of the required rules must pass for \"/private/var/folders/ry/kgy3g6v96s71jg3htn6r5rt80000gn/T/php8E5apg\""}

Я пытался в Google посмотреть, как это делают другие, но не смог найти ничего полезного.

1

Решение

Попробуйте сделать это:

var_dump(v::image()->validate($_FILES['image']['tmp_name‌​']‌​));
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]