我有下一个表单:
$form = ActiveForm::begin(['id' => 'form-profile-edit', 'options' => ['enctype' => 'multipart/form-data']]); ?>
<?= Html::activeFileInput($model, 'image_upload', ['class' => 'hidden', 'id' => 'file-avatar', 'accept' => 'image/*', 'onchange' => 'javascript:this.form.submit()'])?>
<?php ActiveForm::end();
此规则在模型中:
['image-upload', 'file', 'extensions' => ['png', 'jpg', 'jpeg'], 'maxSize' => 45000],
[['image-upload'], 'safe'],
控制器中的代码:
if ($model->load(Yii::$app->request->post())) {
$file = 'yii'web'UploadedFile::getInstance($model, 'image_upload');
if ($file) {
//print_r($_FILES);
echo "<br>pathactual: " . getcwd();
echo "<br>basename: " . $file->baseName;
echo "<br>extension: " . $file->extension;
echo "<br>name: " . $file->name;
echo "<br>SaveUrl: " . Yii::$app->homeUrl . "assets/avatars/" . $file->baseName . "." . $file->extension;
echo "<br>Error: " . $file->error; //This shows 0
echo "Size: " . $file->size;
$model->avatar = $file->baseName. "-big." . $file->extension;
if($model->update(true, ["avatar"])){
echo "<br>avatar actualizado";
Yii::$app->getSession()->setFlash('profile-Msg-OK', Yii::t("app", "Generic_Changes_OK"));
//Guardamos el fichero del avatar
if($file->saveAs(Yii::$app->homeUrl . "assets/avatars/" . $file->baseName . "-big." . $file->extension)){
echo "<br>Imagen guardada correctamente.";
}else{
echo "<br>Imagen no guardada correctamente: " . $file->error; //This shows 1
}
}
}
我可以看到$file对象正确,大小,tempName,baseName,扩展名。。我将头像名称保存在$model->avatar中,然后进行更新。这很好用。
现在,我执行saveAs方法,但总是输入else,此时$file->errror值为1。我看到UploadedFile文档,并看到:
$error integer描述此文件状态的错误代码上传。
在这里搜索可能的状态,我看到1对应于:
UPLOAD_ERR_INI_SIZE值:1;上载的文件超过php.ini中的upload_max_filesize指令。
然后,我转到我的php.ini文件(我从phpinfo修改了它),我有40M
上传_max_filesize 40M 40M
我用来测试的文件有14和16KB。你知道吗?
如果有人需要更多信息,请评论
您需要更正保存路径
if($file->saveAs(Yii::$app->homeUrl . "assets/avatars/" . $file->baseName . "-big." . $file->extension))
此处
Yii::$app->homeUrl
不是你想要的,因为它是你的应用程序的url,你需要像这样的东西
if($file->saveAs(Yii::getAlias('@webroot') . "/assets/avatars/" . $file->baseName . "-big." . $file->extension))
文件系统中的绝对路径