我正在使用 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
歡迎任何疑問,如果您看不到光明,我可以向您展示示例項目。
- 1 回答
- 0 關注
- 279 瀏覽
添加回答
舉報
0/150
提交
取消