diff --git a/framework/validators/FileValidator.php b/framework/validators/FileValidator.php
index b09cfa5..ae92736 100644
--- a/framework/validators/FileValidator.php
+++ b/framework/validators/FileValidator.php
@@ -167,7 +167,7 @@ class FileValidator extends Validator
 	protected function validateValue($file)
 	{
 		if (!$file instanceof UploadedFile || $file->error == UPLOAD_ERR_NO_FILE) {
-			return $this->skipOnEmpty ? null : [$this->uploadRequired, []];
+			return [$this->uploadRequired, []];
 		}
 		switch ($file->error) {
 			case UPLOAD_ERR_OK:
@@ -225,6 +225,14 @@ class FileValidator extends Validator
 	}
 
 	/**
+	 * @inheritdoc
+	 */
+	public function isEmpty($value, $trim = false)
+	{
+		return !$value instanceof UploadedFile || $value->error == UPLOAD_ERR_NO_FILE;
+	}
+
+	/**
 	 * Converts php.ini style size to bytes
 	 *
 	 * @param string $sizeStr $sizeStr
diff --git a/framework/validators/ImageValidator.php b/framework/validators/ImageValidator.php
index 4bdbc23..52fb235 100644
--- a/framework/validators/ImageValidator.php
+++ b/framework/validators/ImageValidator.php
@@ -144,12 +144,8 @@ class ImageValidator extends FileValidator
 	 */
 	protected function validateValue($file)
 	{
-		if ($this->skipOnEmpty && (!$file instanceof UploadedFile || $file->error == UPLOAD_ERR_NO_FILE)) {
-			return null;
-		} else {
-			$result = parent::validateValue($file);
-			return empty($result) ? $this->validateImage($file) : $result;
-		}
+		$result = parent::validateValue($file);
+		return empty($result) ? $this->validateImage($file) : $result;
 	}
 	
 	/**
diff --git a/tests/unit/framework/validators/FileValidatorTest.php b/tests/unit/framework/validators/FileValidatorTest.php
index b8a9f0d..6593120 100644
--- a/tests/unit/framework/validators/FileValidatorTest.php
+++ b/tests/unit/framework/validators/FileValidatorTest.php
@@ -170,8 +170,8 @@ class FileValidatorTest extends TestCase
 		$val->validateAttribute($m, 'attr_files');
 		$this->assertFalse($m->hasErrors());
 		$val->validateAttribute($m, 'attr_files_empty');
-		$this->assertFalse($m->hasErrors('attr_files_empty'));
-		$m = $this->createModelForAttributeTest();
+		$this->assertTrue($m->hasErrors('attr_files_empty'));
+		$this->assertSame($val->uploadRequired, current($m->getErrors('attr_files_empty')));
 
 		// single File with skipOnEmpty=false
 		$val = new FileValidator(['skipOnEmpty' => false]);