为了账号安全,请及时绑定邮箱和手机立即绑定

FileUpload to upload image 保存图片失败,但不显示错误信息

FileUpload to upload image 保存图片失败,但不显示错误信息

PHP
米琪卡哇伊 2021-10-15 16:04:23
我正在使用 Yii2 基本版。似乎没有什么问题,没有显示错误消息,但是为什么我的图片没有上传?其余的(标题、内容等)通过表单上传,不过这是我模型的规则和相关方法:public $image; public function init(){   Yii::$app->params['uploadPath'] = Yii::$app->basePath . '/uploads/batam/';   Yii::$app->params['uploadUrl'] = Yii::$app->urlManager->baseUrl . '/uploads/batam/';    } public function rules()    {        return [            [['title', 'content'], 'required'],            [['content'], 'string'],            [['created_at', 'updated_at','image'], 'safe'],            [['image'], 'file','extensions'=>'jpg,png,jpeg'],            [['title'], 'string', 'max' => 255],        ];    }    public function getImageFile()     {        return isset($this->image) ? Yii::$app->params['uploadPath'].$this->image : null;    }  public function uploadImage() {     $image = UploadedFile::getInstance($this, 'image');     if (empty($image)) {            return false;     }     $this->image = $image->name;        return $image;     }这是表格echo $form->field($model, 'image')->widget(FileInput::classname(), [    'options' => ['accept' => 'image/*'],    'pluginOptions' => [['previewFileType' => 'any']]]);我enctype在表格的开头也 包含了<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]);在这里面点if ($image !== false)控制器的一部分$image,并$path要保存,为包含一个看似正确的路径。这是我的 $path :C:\xampp\htdocs\gbia/uploads/batam/test image 1-01.jpg并且我的 $image 也包含对象(非空)。这是我的 $image 的 var_dump :object(yii\web\UploadedFile)#179 (5) { ["name"]=> string(19) "test image 1-01.jpg" ["tempName"]=> string(24) "C:\xampp\tmp\php3199.tmp" ["type"]=> string(10) "image/jpeg" ["size"]=> int(925184) ["error"]=> int(0) }我认为 saveAs() 有问题,但我想不通。
查看完整描述

1 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

检查您的模型,您已将 $image 声明为类的公共变量,而不是数据库中的字段,如果您想将数据存储在那里,它将永远无法工作,因为临时的公共属性将具有优先权在数据库列上。


public $image;

所以删除这个字段(如果它也在数据库中)或生成一个新的列名(我建议通过路径的名称)。


[['content', 'path'], 'string'],

然后你需要存储路径,我看不到你在控制器或类中的哪里做。我建议您使用“路径”名称在数据库中添加一个字段,然后在控制器中执行以下操作:


$path = $model->getImageFile();

$image->saveAs($path);

$model->path = $path . $image // You must store the full path plus the file name

$model->save(); // then you save the model again

欢迎任何疑问,如果您看不到光明,我可以向您展示示例项目。


查看完整回答
反对 回复 2021-10-15
  • 1 回答
  • 0 关注
  • 248 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信