Maison  >  Article  >  cadre php  >  Téléchargement et téléchargement de fichiers dans le framework Yii : implémenter les opérations liées aux fichiers

Téléchargement et téléchargement de fichiers dans le framework Yii : implémenter les opérations liées aux fichiers

王林
王林original
2023-06-21 09:44:261220parcourir

Yii framework est un framework MVC basé sur le langage PHP Ses principales fonctionnalités sont un développement rapide, une simplicité et une efficacité. Dans le développement de sites Web, le téléchargement et le téléchargement de fichiers sont une fonction courante. Cet article explique comment implémenter le téléchargement et le téléchargement de fichiers dans le framework Yii.

1. Téléchargement de fichiers

1. Préparation

Avant de télécharger des fichiers, nous devons effectuer les configurations pertinentes. Ouvrez le fichier config/main.php et ajoutez le code suivant au composant :

'components' => [
      'request' => [
        'parsers' => [
          'application/json' => 'yiiwebJsonParser',
          'multipart/form-data' => 'yiiwebMultipartFormDataParser',
        ],
      ],
        'request' => [
        'enableCsrfCookie' => false,
        'enableCsrfValidation' => false,
        'parsers' => [
          'multipart/form-data' => 'yiiwebMultipartFormDataParser',
        ],
      ],
        'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
        ],
      ],
 
  ],

Ajoutez deux paramètres de requête au composant, à savoir parsers et activateCsrfValidation. parsers est l'analyseur de la requête. L'ajout de multipart/form-data indique que le téléchargement de fichiers est autorisé. EnableCsrfValidation signifie désactiver la vérification CSRF.

2. Implémenter le téléchargement de fichiers

Pour implémenter le téléchargement de fichiers dans le contrôleur, vous pouvez choisir la soumission de formulaire ou le téléchargement Ajax. Ici, nous prenons la soumission de formulaire comme exemple.

public function actionUpload()
    {
        $uploadModel = new UploadForm();
 
        if (Yii::$app->request->isPost) {
            $uploadModel->file = UploadedFile::getInstance($uploadModel, 'file');
            if ($uploadModel->upload()) {
                // file is uploaded successfully
                return;
            }
        }
 
        return $this->render('upload', ['model' => $uploadModel]);
    }

Dans actionUpload, une classe modèle UploadForm pour le téléchargement de fichiers est instanciée. En même temps, Yii::$app->request->isPost est utilisé pour déterminer s'il s'agit d'une requête POST. Si tel est le cas, la méthode Yii::$app->request->getInstance() est utilisée. utilisé pour obtenir les informations sur le fichier, et appelez la méthode upload() pour télécharger des fichiers. Renvoie vrai si le téléchargement réussit, faux s'il échoue.

Le code d'implémentation de la classe UploadForm est le suivant :

class UploadForm extends yiiaseModel
    {
        /**
         * @var UploadedFile file attribute
         */
        public $file;
 
 
        /**
         * @return array the validation rules.
         */
        public function rules()
        {
            return [
                [['file'], 'file'],
            ];
        }
 
        public function upload()
        {
            if ($this->validate()) {
                $filePath = 'uploads/' . $this->file->baseName . '.' . $this->file->extension;
                $this->file->saveAs($filePath);
                return true;
            } else {
                return false;
            }
        }
    }

Dans UploadForm, un fichier d'attributs publics est défini pour stocker les fichiers téléchargés. Dans le même temps, une méthode de règles est mise en place pour vérifier le fichier et télécharger le fichier après avoir réussi la vérification. Le chemin de téléchargement du fichier est 'uploads/' . $this->file->baseName '.'

3. Implémenter le téléchargement de fichiers

La fonction de téléchargement de fichiers est relativement simple à mettre en œuvre, il suffit de renvoyer le flux de fichiers directement dans le contrôleur.

public function actionDownload($file)
    {
        Yii::$app->response->sendFile($file);
    }

Dans actionDownload, utilisez la méthode Yii::$app->response->sendFile() pour renvoyer le flux de fichiers. Où $file est le chemin du fichier.

2. Résumé

Cet article présente comment implémenter les fonctions de téléchargement et de téléchargement de fichiers dans le framework Yii, impliquant principalement la configuration, les opérations et les modèles associés de téléchargement et de téléchargement de fichiers. télécharger. Grâce à l'étude de cet article, nous aurons une compréhension et une familiarité plus approfondies avec les opérations sur les fichiers dans le framework Yii, et implémenterons les fonctions associées plus facilement et plus rapidement.

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