Maison  >  Article  >  cadre php  >  Comment utiliser le framework Hyperf pour le téléchargement de fichiers

Comment utiliser le framework Hyperf pour le téléchargement de fichiers

WBOY
WBOYoriginal
2023-10-21 08:23:141545parcourir

Comment utiliser le framework Hyperf pour le téléchargement de fichiers

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, entrez dans le répertoire racine du projet Hyperf et exécutez la commande suivante pour générer un contrôleur de téléchargement :

php bin/hyperf.php generate:controller DownloadController

Le fichier du contrôleur généré se trouve dans le répertoire app/Controller. Ouvrez le fichier. et modifiez La méthode index() est la suivante : app/Controller目录下,打开该文件,修改index()方法如下:

<?php

declare(strict_types=1);

namespace AppController;

use HyperfHttpServerAnnotationController;
use HyperfHttpServerAnnotationRequestMapping;
use HyperfHttpMessageStreamSwooleStream;
use HyperfUtilsCodecEncode;
use HyperfUtilsCodecJson;
use HyperfUtilsCodecXml;

/**
 * @Controller
 */
class DownloadController
{
    /**
     * 下载文件
     * @RequestMapping(path="/download", methods="get")
     */
    public function index()
    {
        // 文件路径
        $file = '/path/to/file'; // 替换成实际文件路径

        // 文件名
        $filename = 'filename.ext'; // 替换成实际文件名

        // 设置响应头
        return response()
            ->header('Content-Type', 'application/octet-stream')
            ->header('Content-Disposition', 'attachment; filename=' . $filename)
            ->stream(new SwooleStream(file_get_contents($file)));
    }
}

这里我们使用response()函数创建一个响应实例,通过header()方法设置响应头,stream()方法用于发送文件内容。你需要将$file变量替换为实际的文件路径,将$filename变量替换为实际的文件名。

三、配置路由
接下来,我们需要配置一个路由来访问下载控制器。打开 config/routes.php 文件,添加如下代码:

<?php
//...
use AppControllerDownloadController;
//...
Router::get('/download', [DownloadController::class, 'index']);
//...

这样就配置好了一个GET请求的路由,当访问/download时,将会执行DownloadControllerindex方法。

四、启动服务器
启动Hyperf服务器,以监听HTTP请求。在终端中进入Hyperf项目根目录,执行以下命令:

php bin/hyperf.php start

服务器启动后,就可以通过访问http://localhost:9501/downloadrrreee

Ici, nous utilisons la fonction response() pour créer une instance de réponse et définissons l'en-tête de réponse via le header(), stream() est utilisée pour envoyer le contenu du fichier. Vous devez remplacer la variable $file par le chemin réel du fichier et la variable $filename par le nom réel du fichier.


3. Configurer le routage

Ensuite, nous devons configurer un itinéraire pour accéder au contrôleur de téléchargement. Ouvrez le fichier config/routes.php et ajoutez le code suivant : 🎜rrreee🎜Cela configurera une route pour une requête GET Lors de l'accès à /download, index du code>DownloadController. 🎜🎜4. Démarrez le serveur 🎜Démarrez le serveur Hyperf pour écouter les requêtes HTTP. Entrez le répertoire racine du projet Hyperf dans le terminal et exécutez la commande suivante : 🎜rrreee🎜Après le démarrage du serveur, vous pouvez télécharger le fichier en accédant à http://localhost:9501/download. 🎜🎜Conclusion : 🎜Cet article explique comment utiliser le framework Hyperf pour le téléchargement de fichiers, notamment la création d'un contrôleur de téléchargement, la configuration du routage et le démarrage du serveur. Grâce à l'exemple de code de cet article, vous pouvez facilement implémenter la fonction de téléchargement de fichiers dans votre projet Hyperf. J'espère que cet article vous aidera ! 🎜

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