我使用ActiveRecord,我想上传图片。但是Yii总是说fileInput是空的。
我的模型有一个名为“image”的额外属性,规则是
[['image'], 'required', 'on' => 'new'],
[['image'], 'image', 'extensions' => 'png, jpg'],
我在控制器中使用此代码
$model = new Picture();
$model->scenario = 'new';
if ($model->load(Yii::$app->request->post()) && $model->save()) {
$model->image = UploadedFile::getInstance($model, 'image');
$model->image->saveAs($model->savePath($this->plugin).'/'.$model->id.'.jpg');
}
我做错了什么?
答案 0 :(得分:0)
下面的代码对我有用,希望它会对你有帮助,
[['logo'], 'required', 'on' => 'create'],
[['logo'], 'file', 'skipOnError' => true,'extensions' => 'png, jpg, gif'],
$model = new Company();
$model->scenario = 'create';
if ($model->load(Yii::$app->request->post())) {
$logo = UploadedFile::getInstance($model, 'logo');
if (!is_null($logo)) {
$model->logo = $logo->name;
if($model->validate()) {
$dirpath = dirname(getcwd());
$logo->saveAs($dirpath . '/admin/uploads/' . $logo->baseName . '.' . $logo->extension);
$model->save();
return $this->redirect(['view', 'id' => $model->Id]);
}
}
}