Yii - Caricamento di file
Puoi facilmente implementare una funzione di caricamento di file con l'aiuto di yii\web\UploadedFile, models e yii\widgets\ActiveForm.
Crea una directory ‘uploads’nella cartella principale. Questa directory conterrà tutte le immagini caricate. Per caricare un singolo file, è necessario creare un modello e un attributo del modello per l'istanza del file caricato. Dovresti anche convalidare il caricamento del file.
Step 1 - All'interno del models cartella, crea un file chiamato UploadImageForm.php con il seguente contenuto.
<?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;
}
}
}
?>
Il imagel'attributo viene utilizzato per mantenere l'istanza del file. Ilfile la regola di convalida garantisce che un file abbia l'estensione png o a jpgestensione. La funzione di caricamento convalida il file e lo salva sul server.
Step 2 - Ora aggiungi il file actionUploadImage funzione al 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 - Quando il modulo viene inviato, chiamiamo yii\web\UploadedFile::getInstance() funzione per rappresentare il file caricato come un UploadedFileesempio. Quindi, convalidiamo il file e lo salviamo sul server.
Step 4 - Quindi, crea un file upload.php visualizza il file all'interno del views/site directory.
<?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() ?>
Ricordati di aggiungere il file enctype opzione quando carichi un file. The fileInput() metodo esegue il rendering del seguente codice html -
<input type = "file">
Il codice html di cui sopra consente agli utenti di selezionare e caricare file.
Step 5 - Ora, se vai a http://localhost:8080/index.php?r=site/upload-image, vedrai quanto segue.
Step 6- Seleziona un'immagine da caricare e fai clic sul pulsante "Invia". Il file verrà salvato sul server all'interno del file‘uploads’ cartella.