Maison développement back-end tutoriel php Middleware CakePHP : implémenter les fonctions de téléchargement et de téléchargement de fichiers

Middleware CakePHP : implémenter les fonctions de téléchargement et de téléchargement de fichiers

Jul 30, 2023 pm 03:09 PM
文件上传 文件下载 cakephp中间件

Middleware CakePHP : implémenter des fonctions de téléchargement et de téléchargement de fichiers

Avec le développement d'Internet, les fonctions de téléchargement et de téléchargement de fichiers deviennent de plus en plus courantes. Lors du développement d’applications Web, nous devons souvent implémenter le téléchargement et le téléchargement de fichiers. Lors du développement d'applications à l'aide du framework CakePHP, le middleware est un outil très utile qui peut nous aider à simplifier le code et à implémenter des fonctions de téléchargement et de téléchargement de fichiers. Ensuite, je présenterai comment utiliser le middleware CakePHP pour implémenter les fonctions de téléchargement et de téléchargement de fichiers.

Tout d'abord, nous devons créer une nouvelle classe middleware, créer un fichier nommé FileHandlerMiddleware.php dans le répertoire src/Middleware et ajouter le code suivant : src/Middleware目录下创建一个名为FileHandlerMiddleware.php的文件,并添加以下代码:

<?php

namespace AppMiddleware;

use CakeUtilityText;
use CakeHttpResponse;
use PsrHttpMessageResponseInterface;
use PsrHttpMessageServerRequestInterface;
use CakeHttpServerRequest;

class FileHandlerMiddleware
{
    public function __invoke(ServerRequestInterface $request, ResponseInterface $response, $next)
    {
        $path = WWW_ROOT . 'uploads' . DS;
        
        // 处理文件上传
        if ($request->getMethod() === 'POST' && $request->getData('file')) {
            $file = $request->getData('file');
            $fileName = Text::uuid() . '-' . $file->getClientFilename();
            $file->moveTo($path . $fileName);
            
            $response = new Response();
            $response = $response->withAddedHeader('Content-Type', 'application/json');
            $response->getBody()->write(json_encode(['success' => true, 'message' => '文件上传成功!']));
            
            return $response;
        }
        
        // 处理文件下载
        $params = $request->getAttribute('params');
        if (isset($params['file'])) {
            $fileName = $params['file'];
            $filePath = $path . $fileName;
            
            if (file_exists($filePath)) {
                $stream = fopen($filePath, 'r');
                
                $response = new Response();
                $response = $response->withAddedHeader('Content-Disposition', 'attachment; filename="' . $fileName . '"');
                
                $response->withBody(new SlimHttpStream($stream));
                
                return $response;
            }
        }
        
        return $next($request, $response);
    }
}
Copier après la connexion

在上述代码中,FileHandlerMiddleware是一个用于文件上传和下载的中间件类。当收到POST请求并且请求中包含名为file的数据时,中间件将把文件保存到uploads文件夹下,并返回一个成功的JSON响应。当收到带有file参数的请求时,中间件将按照文件名返回文件内容作为响应。

接下来,我们需要将中间件注册到应用程序中。打开src/Application.php文件,并在Application类的middleware方法中注册中间件。代码如下:

use AppMiddlewareFileHandlerMiddleware;

// ...

public function middleware($middlewareQueue)
{
    $middlewareQueue
        ->add(new FileHandlerMiddleware())
        // 其它中间件
        // ...
        ->add(new ErrorHandlerMiddleware(Configure::read('Error')))
        ->add(new AssetMiddleware())
        ->add(new RoutingMiddleware($this));

    return $middlewareQueue;
}
Copier après la connexion

在上述代码中,我们使用add方法将FileHandlerMiddleware中间件注册到中间件队列中。使用中间件队列可以按顺序处理多个中间件,并且在执行控制器动作之前执行注册的中间件。

现在,我们可以使用文件上传和下载功能了。假设我们有一个控制器方法来处理文件上传:

public function upload()
{
    // 显示上传表单
}
Copier après la connexion

然后,在对应的视图文件中添加如下的表单代码:

<form method="POST" action="/upload" enctype="multipart/form-data">
    <input type="file" name="file" />
    <button type="submit">上传</button>
</form>
Copier après la connexion

在上述代码中,我们创建了一个表单,其中包含一个文件上传字段和一个提交按钮。表单的enctype属性设置为multipart/form-data,这是文件上传所必需的。

当用户选择文件并点击提交按钮时,文件将被上传到服务器,并返回一个成功的JSON响应。

另外,我们还可以使用以下URL来下载文件:

/download/{file_name}
Copier après la connexion

例如,要下载名为example.jpg

/download/example.jpg
Copier après la connexion
Dans le code ci-dessus, FileHandlerMiddleware est une classe middleware pour le téléchargement et le téléchargement de fichiers. Lorsqu'une requête POST est reçue et que la requête contient des données nommées file, le middleware enregistre le fichier dans le dossier uploads et renvoie un JSON réussi. réponse. Lors de la réception d'une requête avec le paramètre file, le middleware renverra le contenu du fichier en fonction du nom du fichier en réponse.

Ensuite, nous devons enregistrer le middleware dans l'application. Ouvrez le fichier src/Application.php et enregistrez le middleware dans la méthode middleware de la classe Application. Le code est le suivant :

rrreee

Dans le code ci-dessus, nous utilisons la méthode add pour enregistrer le middleware FileHandlerMiddleware dans la file d'attente du middleware. Utilisez une file d'attente de middleware pour traiter plusieurs middlewares en séquence et exécuter les middlewares enregistrés avant d'exécuter les actions du contrôleur.

Maintenant, nous pouvons utiliser les fonctions de téléchargement et de téléchargement de fichiers. Supposons que nous ayons une méthode de contrôleur pour gérer le téléchargement de fichiers : 🎜rrreee🎜 Ensuite, ajoutez le code de formulaire suivant dans le fichier de vue correspondant : 🎜rrreee🎜 Dans le code ci-dessus, nous créons un formulaire qui contient un champ de téléchargement de fichier et un bouton de soumission. L'attribut enctype du formulaire est défini sur multipart/form-data, ce qui est requis pour les téléchargements de fichiers. 🎜🎜Lorsque l'utilisateur sélectionne un fichier et clique sur le bouton Soumettre, le fichier sera téléchargé sur le serveur et une réponse JSON réussie sera renvoyée. 🎜🎜De plus, nous pouvons également utiliser l'URL suivante pour télécharger le fichier : 🎜rrreee🎜Par exemple, pour télécharger un fichier nommé example.jpg, vous pouvez utiliser l'URL suivante : 🎜rrreee🎜Le fichier sera au format téléchargé Retour à l'utilisateur. 🎜🎜Résumé : 🎜🎜Cet article présente comment utiliser le middleware CakePHP pour implémenter les fonctions de téléchargement et de téléchargement de fichiers. En créant une nouvelle classe middleware, nous pouvons gérer les demandes de téléchargement et de téléchargement de fichiers et renvoyer les réponses appropriées. Le middleware nous aide à simplifier le code et à améliorer les fonctionnalités de l'application. J'espère que cet article vous aidera à comprendre et à utiliser le middleware CakePHP. 🎜

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Opération d'ouverture Python après avoir téléchargé le fichier Opération d'ouverture Python après avoir téléchargé le fichier Apr 03, 2024 pm 03:39 PM

Python fournit les options suivantes pour ouvrir les fichiers téléchargés : Fonction open() : ouvre le fichier en utilisant le chemin et le mode spécifiés (tels que « r », « w », « a »). Bibliothèque de requêtes : utilisez sa méthode download() pour attribuer automatiquement un nom et ouvrir directement le fichier. Bibliothèque Pathlib : utilisez les méthodes write_bytes() et read_text() pour écrire et lire le contenu du fichier.

Implémenter le téléchargement et le téléchargement de fichiers dans les documents Workerman Implémenter le téléchargement et le téléchargement de fichiers dans les documents Workerman Nov 08, 2023 pm 06:02 PM

Pour implémenter le téléchargement et le téléchargement de fichiers dans des documents Workerman, des exemples de code spécifiques sont requis Introduction : Workerman est un framework de communication réseau asynchrone PHP hautes performances, simple, efficace et facile à utiliser. Dans le développement réel, le téléchargement et le téléchargement de fichiers sont des exigences fonctionnelles courantes. Cet article explique comment utiliser le framework Workerman pour implémenter le téléchargement et le téléchargement de fichiers, et donne des exemples de code spécifiques. 1. Téléchargement de fichiers : le téléchargement de fichiers fait référence à l'opération de transfert de fichiers de l'ordinateur local vers le serveur. Ce qui suit est utilisé

Comment utiliser les fonctions PHP pour télécharger et télécharger des pièces jointes pour envoyer et recevoir des e-mails ? Comment utiliser les fonctions PHP pour télécharger et télécharger des pièces jointes pour envoyer et recevoir des e-mails ? Jul 25, 2023 pm 08:17 PM

Comment utiliser les fonctions PHP pour télécharger et télécharger des pièces jointes pour envoyer et recevoir des e-mails ? Avec le développement rapide des technologies de communication modernes, le courrier électronique est devenu un moyen important pour communiquer et transmettre des informations dans la vie quotidienne. Dans le développement Web, nous rencontrons souvent le besoin d’envoyer et de recevoir des e-mails avec des pièces jointes. En tant que puissant langage de script côté serveur, PHP fournit une multitude de fonctions et de bibliothèques de classes qui peuvent simplifier le processus de traitement des e-mails. Cet article explique comment utiliser les fonctions PHP pour télécharger et télécharger des pièces jointes pour l'envoi et la réception d'e-mails. L'e-mail est envoyé en premier, nous

Comment utiliser Laravel pour implémenter les fonctions de téléchargement et de téléchargement de fichiers Comment utiliser Laravel pour implémenter les fonctions de téléchargement et de téléchargement de fichiers Nov 02, 2023 pm 04:36 PM

Comment utiliser Laravel pour implémenter les fonctions de téléchargement et de téléchargement de fichiers Laravel est un framework Web PHP populaire qui fournit une multitude de fonctions et d'outils pour rendre le développement d'applications Web plus facile et plus efficace. L'une des fonctions couramment utilisées est le téléchargement et le téléchargement de fichiers. Cet article expliquera comment utiliser Laravel pour implémenter les fonctions de téléchargement et de téléchargement de fichiers, et fournira des exemples de code spécifiques. Téléchargement de fichiers Le téléchargement de fichiers fait référence au téléchargement de fichiers locaux sur le serveur pour le stockage. Dans Laravel, nous pouvons utiliser le téléchargement de fichiers

Comment utiliser gRPC pour implémenter le téléchargement de fichiers dans Golang ? Comment utiliser gRPC pour implémenter le téléchargement de fichiers dans Golang ? Jun 03, 2024 pm 04:54 PM

Comment implémenter le téléchargement de fichiers à l'aide de gRPC ? Créez des définitions de service de support, y compris des messages de demande et de réponse. Sur le client, le fichier à télécharger est ouvert et divisé en morceaux, puis diffusé sur le serveur via un flux gRPC. Côté serveur, des fragments de fichiers sont reçus et stockés dans un fichier. Le serveur envoie une réponse une fois le téléchargement du fichier terminé pour indiquer si le téléchargement a réussi.

Comment résoudre l'exception de téléchargement de fichiers Java (FileUploadException) Comment résoudre l'exception de téléchargement de fichiers Java (FileUploadException) Aug 18, 2023 pm 12:11 PM

Comment résoudre l'exception de téléchargement de fichiers Java (FileUploadException). Un problème souvent rencontré dans le développement Web est FileUploadException (exception de téléchargement de fichiers). Cela peut se produire pour diverses raisons telles qu'une taille de fichier dépassant la limite, une incompatibilité de format de fichier ou une configuration incorrecte du serveur. Cet article décrit quelques méthodes pour résoudre ces problèmes et fournit des exemples de code correspondants. Limiter la taille des fichiers téléchargés Dans la plupart des scénarios, limitez la taille du fichier

Comment utiliser le framework Hyperf pour le téléchargement de fichiers Comment utiliser le framework Hyperf pour le téléchargement de fichiers Oct 21, 2023 am 08:23 AM

Comment utiliser le framework Hyperf pour le téléchargement de fichiers Introduction : Le téléchargement de fichiers est une exigence courante lors du développement d'applications Web à l'aide du framework Hyperf. Cet article explique comment utiliser le framework Hyperf pour le téléchargement de fichiers, y compris des exemples de code spécifiques. 1. Préparation Avant de commencer, assurez-vous d'avoir installé le framework Hyperf et créé avec succès une application Hyperf. 2. Créer un contrôleur de téléchargement de fichiers Tout d'abord, nous devons créer un contrôleur pour gérer les demandes de téléchargement de fichiers. Ouvrez le terminal et entrez

Comment implémenter la barre de progression du téléchargement de fichiers FTP en utilisant PHP Comment implémenter la barre de progression du téléchargement de fichiers FTP en utilisant PHP Jul 30, 2023 pm 06:51 PM

Comment utiliser PHP pour implémenter la barre de progression du téléchargement de fichiers FTP 1. Introduction générale Dans le développement de sites Web, le téléchargement de fichiers est une fonction courante. Pour le téléchargement de fichiers volumineux, afin d'améliorer l'expérience utilisateur, nous devons souvent afficher une barre de progression du téléchargement à l'utilisateur pour l'informer du processus de téléchargement du fichier. Cet article explique comment utiliser PHP pour implémenter la fonction de barre de progression du téléchargement de fichiers FTP. 2. L'idée de base de la mise en œuvre de la barre de progression du téléchargement de fichiers FTP est généralement calculée en calculant la taille du fichier téléchargé et la taille du fichier téléchargé.

See all articles