Yii 2.0 文件验证不通过 [ 求助交流 ]
模型:
class UploadForm extends Model
{
/**
* @var UploadedFile file attribute
*/
public $file;
/**
* @return array the validation rules.
*/
public function rules()
{
return [
[['file'], 'file', 'extensions' => 'jpg, png']];
}
}
视图:
<?php
use yii\widgets\ActiveForm;
?>
<?php $form = ActiveForm::begin([ 'options' => ['enctype' => 'multipart/form-data'],]) ?>
<?=$form->field($model,'file')->fileInput();
?>
<button>Submit</button>
<?php ActiveForm::end() ?>
控制器:
public function actionUpload()
{
$model = new UploadForm();
if (Yii::$app->request->isPost) {
$model->file = UploadedFile::getInstance($model, 'file');
$filePath = $this->fileExists(Yii::$app->basePath . '/web/uploads/');
if ($model->file && $model->validate()) {
$model->file->saveAs($filePath . $model->file->baseName . '.' . $model->file->extension);
}
var_dump($model->file->extension);
echo '<br>';
var_dump($model->validate());
echo '<br>';
var_dump($model->errors);
} else {
return $this->render('upload', ['model' => $model]);
}
}
为何验证的结果一直为false? 输出结果为:
string(3) "jpg"
bool(false)
array(1) { ["file"]=> array(1) { [0]=> string(59) "只允许使用以下文件扩展名的文件:png, jpg。" } }
文件类型对了,还是显示为错的 php.ini里面也配置了
extension=php_fileinfo.dll
为何验证不过?
共 3 条回复
-
问题已解决,要在验证里面加上;
'checkExtensionByMimeType' => false
整个验证就是这样:[['file'], 'file', 'skipOnEmpty' => true, 'extensions' => 'png, jpg', 'checkExtensionByMimeType' => false],
这样就可以解决了。
原因(mime类型验证不通过?要关闭mime类型验证。)
http://stackoverflow.com/questions/33194385/yii2-file-validation-not-working-after-upload共 1 条回复a313298389 回复于 2017-08-22 14:46 回复谢谢!!!
forecho , a313298389 觉得很赞
yii初学者
注册时间:2016-12-01
最后登录:2016-12-28
在线时长:4小时35分
最后登录:2016-12-28
在线时长:4小时35分
- 粉丝1
- 金钱130
- 威望0
- 积分170