Maison  >  Article  >  cadre php  >  Chargement et téléchargement de fichiers dans le framework Yii : implémentation des opérations sur les fichiers

Chargement et téléchargement de fichiers dans le framework Yii : implémentation des opérations sur les fichiers

PHPz
PHPzoriginal
2023-06-21 08:42:031609parcourir

Dans le développement Web, le téléchargement de fichiers est une exigence très courante. Dans le framework Yii, nous pouvons facilement implémenter des opérations sur les fichiers grâce aux fonctions intégrées de téléchargement et de téléchargement de fichiers. Dans cet article, nous présenterons comment télécharger et télécharger des fichiers dans le framework Yii.

1. Télécharger des fichiers

Le téléchargement de fichiers implique généralement deux processus : le rendu du formulaire de téléchargement et le traitement du téléchargement du fichier. Dans le framework Yii, nous pouvons restituer le formulaire de téléchargement en utilisant Active Form, puis utiliser UploadedFile dans le contrôleur backend pour gérer le processus de téléchargement de fichiers.

  1. Formulaire de téléchargement de rendu

Pour télécharger un fichier, vous devez d'abord rendre le formulaire de téléchargement. Dans le framework Yii, nous pouvons utiliser Active Form pour générer rapidement des formulaires de téléchargement. Voici un exemple de formulaire simple de téléchargement de fichier :

$form = ActiveForm::begin([

'options' => ['enctype' => 'multipart/form-data']

]) ?>

2f344a32ace7da85628d1feacf48dca8field($model, 'file')->fileInput() ?>

bb9345e55eb71822850ff156dfde57c8Télécharger65281c5ac262bf6d81768915a4a77ac0

# 🎜 🎜#2106ce3a53cf9b3c41144ecad60c7c77

Dans le code, nous utilisons les méthodes begin() et end() d'Active Form pour envelopper le formulaire et définir l'attribut 'enctype' est 'multipart/form-data' pour prendre en charge le téléchargement de fichiers. Ensuite, nous utilisons la méthode $form->field() pour générer le champ du formulaire. Le nom du champ est un attribut dans notre modèle, nous utilisons ici 'file'. Enfin, nous ajoutons un bouton de soumission sur lequel les utilisateurs peuvent cliquer pour télécharger des fichiers.

    Gestion du téléchargement de fichiers
Une fois que l'utilisateur clique sur le bouton de téléchargement, nous devons gérer le téléchargement de fichiers dans le contrôleur backend. Dans le framework Yii, nous pouvons utiliser la classe UploadedFile pour gérer le téléchargement de fichiers. Ce qui suit est un simple code de contrôleur de téléchargement de fichiers :

public function actionUpload()

{

$model = new FileModel();

if(Yii::$app->request->isPost){
    $model->file = UploadedFile::getInstance($model, 'file');

    if($model->upload()){
        Yii::$app->session->setFlash('success', '文件上传成功');
    }else{
        Yii::$app->session->setFlash('error', '文件上传失败');
    }
}

return $this->render('upload', ['model' => $model]);

}

dans le code, nous instancions d'abord une classe FileModel, puis vérifions si la requête actuelle est une requête POST. S'il s'agit d'une requête POST, nous utilisons la méthode UploadedFile::getInstance() pour obtenir le fichier téléchargé. « fichier » est le nom du champ du formulaire de téléchargement et le nom de l'attribut que nous avons défini dans le modèle. Nous utilisons ensuite la méthode $model->upload() pour gérer l'opération de téléchargement de fichier. Si le téléchargement du fichier réussit, nous définirons un message de réussite, sinon un message d'erreur. Enfin, nous renvoyons un fichier de vue et passons la variable $model en paramètre, qui contiendra les informations sur les résultats téléchargés.

    Gestion des opérations de téléchargement de fichiers
La dernière étape pour implémenter le téléchargement de fichiers consiste à implémenter la méthode $model->upload(). Ce qui suit est une implémentation simple de la méthode $model->upload() :

public function upload()

{

if ($this->validate()) {
    $file_path = 'uploads/' . $this->file->baseName . '.' . $this->file->extension;

    if ($this->file->saveAs($file_path)) {
        return true;
    } else {
        return false;
    }
} else {
    return false;
}

}

# 🎜🎜#Dans le code, nous vérifions d'abord si le fichier téléchargé a réussi la vérification. Nous créons ensuite un chemin de fichier pour le fichier téléchargé (en combinant le nom du fichier et l'extension et en le stockant dans le dossier de téléchargement). Enfin, nous utilisons la méthode $this->file->saveAs() pour enregistrer le fichier sur le disque. Nous retournerons true si la sauvegarde est réussie, false sinon.

2. Télécharger des fichiers

Pour télécharger un fichier, nous devons fournir un lien de téléchargement sur lequel les utilisateurs peuvent cliquer pour télécharger le fichier. Dans le framework Yii, nous pouvons implémenter le téléchargement de fichiers en utilisant l'objet Response. Ce qui suit est un simple code de contrôleur de téléchargement de fichiers :

public function actionDownload()

{

$file_path = 'uploads/test.txt';

if(file_exists($file_path)){
    return Yii::$app->response->sendFile($file_path);
}else{
    throw new yiiwebNotFoundHttpException('文件不存在');
}

}

dans le code, on obtient d'abord le chemin du fichier à télécharger. Ensuite, nous vérifions si le fichier existe. Si le fichier existe, nous utilisons la méthode Yii::$app->response->sendFile() pour envoyer le fichier à l'utilisateur. Si le fichier n'existe pas, nous lancerons une exception.

3. Afficher les liens de fichiers dans la vue

Enfin, nous devons afficher les liens de téléchargement et de téléchargement de fichiers dans la vue. Voici un exemple simple de fichier d'affichage :

4a249f0d628e2318394fd9b75b4636b1Exemple de téléchargement et de téléchargement de fichiers473f0a7621bec819994bb5020d29372a

684271ed9684bde649abda8831d4d355Téléchargement de fichiers39528cedfa926ea0c01e69ef5b2ea9b0

a7c11fa571097ef5b17f1505b9745517render('_upload_form', ['model' => $model]) ?>

684271ed9684bde649abda8831d4d355 download39528cedfa926ea0c01e69ef5b2ea9b0

e388a4556c0f65e1904146cc1a846beeTélécharger le fichier :

">test.txt

94b3e26ee717c64999d7867364b1b4a3

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn