Yii2 dosya yükleme işlemini kullanarak dosya yüklemeyi deniyorum ve dosya yoluna veri tabanı kaydedilmiş başarılı oldum ancak dosya, belirttiğim dizine kaydedilmedi .. aşağıdaki kod benim. .Dosyanız karşıya yüklendikten sonra dizin yüklenemedi.
<?php
namespace backend\models;
use yii\base\Model;
use yii\web\UploadedFile;
use yii\Validators\FileValidator;
use Yii;
class UploadForm extends Model
{
/**
* @var UploadedFile
*/
public $image;
public $randomCharacter;
public function rules(){
return[
[['image'], 'file', 'skipOnEmpty' => false, 'extensions'=> 'png, jpg,jpeg'],
];
}
public function upload(){
$path = \Yii::getAlias("@backend/web/uploads/");
$randomString = "";
$length = 10;
$character = "QWERTYUIOPLKJHGFDSAZXCVBNMlkjhgfdsaqwertpoiuyzxcvbnm1098723456";
$randomString = substr(str_shuffle($character),0,$length);
$this->randomCharacter = $randomString;
if ($this->validate()){
$this->image->saveAs($path .$this->randomCharacter .'.'.$this->image->extension);
//$this->image->saveAs(\Yii::getAlias("@backend/web/uploads/{$randomString}.{$this->image->extension}"));
return true;
}else{
return false;
}
}
}
o hataları atmak mı FileUpload
namespace backend\controllers;
use Yii;
use backend\models\Product;
use backend\models\ProductSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use backend\models\UploadForm;
use yii\web\UploadedFile;
public function actionCreate()
{
$addd_at = time();
$model = new Product();
$upload = new UploadForm();
if($model->load(Yii::$app->request->post())){
//get instance of the uploaded file
$model->image = UploadedFile::getInstance($model, 'image');
$upload->upload();
$model->added_at = $addd_at;
$model->image = 'uploads/' .$upload->randomCharacter .'.'.$model->image->extension;
$model->save();
return $this->redirect(['view', 'product_id' => $model->product_id]);
} else{
return $this->render('create', [
'model' => $model,
]);
}
}
o atmaz: Buna
: Bu satırı değiştirin herhangi bir hata, ben zaten klasörleri izin 777 değiştirildi ve dosya içine kaydetmek olmaz, şimdi iki gün boyunca bu sorunu ile emmek, ben derde deva üzerinde kontrolörde olduğunu düşünüyorum .. $ upload -> yükleme(); çünkü() koşulu gibi kullanıyorum ... ($ upload-> upload()) {$ model-> save();}, veritabanıya hiçbir şey kaydedilmiyor, bu yüzden eğer kullandığımda işlemin durduğunu düşünüyorum. durum, ama ben gerçekten nerede hata olduğunu bilmiyorum .. herhangi bir yardım için teşekkürler – sam
"error_reporting (E_ALL);" ve eğer modeliniz doğrulama işleminden geçemediyse hala hata yoksa –
upload() yönteminin yanlış olup olmadığını görün. Hangi uygulamaların geçerli olmadığını görmek için $ model-> getErrors() öğesini deneyin. –