Yii - फ़ाइलें अपलोड करें

आप आसानी से एक फ़ाइल अपलोडिंग फंक्शन लागू कर सकते हैं yii\web\UploadedFile, models तथा yii\widgets\ActiveForm

एक निर्देशिका बनाएँ ‘uploads’रूट फ़ोल्डर में। यह निर्देशिका अपलोड की गई सभी छवियों को रखेगा। एकल फ़ाइल अपलोड करने के लिए, आपको अपलोड की गई फ़ाइल के लिए एक मॉडल और मॉडल की एक विशेषता बनाने की आवश्यकता है। आपको फ़ाइल अपलोड को मान्य करना चाहिए।

Step 1 - अंदर models फ़ोल्डर, नामक एक फ़ाइल बनाएँ UploadImageForm.php निम्नलिखित सामग्री के साथ।

<?php
   namespace app\models;
   use yii\base\Model;
   class UploadImageForm extends Model {
      public $image; public function rules() { return [ [['image'], 'file', 'skipOnEmpty' => false, 'extensions' => 'jpg, png'], ]; } public function upload() { if ($this->validate()) {
            $this->image->saveAs('../uploads/' . $this->image->baseName . '.' .
               $this->image->extension);
            return true;
         } else {
            return false;
         }
      }
   }
?>

imageफ़ाइल उदाहरण रखने के लिए विशेषता का उपयोग किया जाता है। file सत्यापन नियम यह सुनिश्चित करता है कि फ़ाइल में ए png या ए jpgविस्तार। अपलोड समारोह फ़ाइल पुष्टि करता है और सर्वर पर सहेजता है।

Step 2 - अब, जोड़ें actionUploadImage कार्य करने के लिए SiteController

public function actionUploadImage() {
   $model = new UploadImageForm();
   if (Yii::$app->request->isPost) { $model->image = UploadedFile::getInstance($model, 'image'); if ($model->upload()) {
         // file is uploaded successfully
         echo "File successfully uploaded";
         return;
      }
   }
   return $this->render('upload', ['model' => $model]);
}

Step 3 - जब फॉर्म जमा किया जाता है, तो हम कॉल करते हैं yii\web\UploadedFile::getInstance() एक के रूप में अपलोड की गई फ़ाइल का प्रतिनिधित्व करने के लिए फ़ंक्शन UploadedFileउदाहरण। फिर, हम फ़ाइल को मान्य करते हैं और इसे सर्वर पर सहेजते हैं।

Step 4 - अगला, एक बनाएँ upload.php अंदर फ़ाइल देखें views/site निर्देशिका।

<?php
   use yii\widgets\ActiveForm;
?>
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']])?> <?= $form->field($model, 'image')->fileInput() ?>
   <button>Submit</button>
<?php ActiveForm::end() ?>

जोड़ने के लिए याद रखें enctype विकल्प जब आप एक फ़ाइल अपलोड करते हैं। The fileInput() विधि निम्नलिखित HTML कोड प्रस्तुत करता है -

<input type = "file">

उपरोक्त HTML कोड उपयोगकर्ताओं को फ़ाइलों का चयन करने और अपलोड करने की अनुमति देता है।

Step 5 - अब, अगर तुम जाओ http://localhost:8080/index.php?r=site/upload-image, आप निम्नलिखित देखेंगे।

Step 6- अपलोड करने के लिए एक छवि का चयन करें और "सबमिट" बटन पर क्लिक करें। फ़ाइल के अंदर सर्वर पर सहेजा जाएगा‘uploads’ फ़ोल्डर।