Rumah > Artikel > rangka kerja php > Cara menggunakan rangka kerja Hyperf untuk memuat turun fail
Cara menggunakan rangka kerja Hyperf untuk memuat turun fail
Pengenalan:
Muat turun fail ialah keperluan biasa apabila membangunkan aplikasi web menggunakan rangka kerja Hyperf. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Hyperf untuk memuat turun fail, termasuk contoh kod khusus.
1. Persediaan
Sebelum anda mula, pastikan anda telah memasang rangka kerja Hyperf dan berjaya mencipta aplikasi Hyperf.
2. Cipta pengawal muat turun fail
Pertama, kita perlu mencipta pengawal untuk mengendalikan permintaan muat turun fail. Buka terminal, masukkan direktori akar projek Hyperf, dan laksanakan arahan berikut untuk menjana pengawal muat turun:
php bin/hyperf.php generate:controller DownloadController
Fail pengawal yang dijana terletak dalam direktori app/Controller
Buka fail dan ubah suai Kaedah index()
adalah seperti berikut: 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
时,将会执行DownloadController
的index
方法。
四、启动服务器
启动Hyperf服务器,以监听HTTP请求。在终端中进入Hyperf项目根目录,执行以下命令:
php bin/hyperf.php start
服务器启动后,就可以通过访问http://localhost:9501/download
rrreee
response()
untuk mencipta contoh respons dan menetapkan pengepala respons melalui header(), stream()
digunakan untuk menghantar kandungan fail. Anda perlu menggantikan pembolehubah $file
dengan laluan fail sebenar dan pembolehubah $filename
dengan nama fail sebenar.
3. Konfigurasi penghalaan
config/routes.php
dan tambah kod berikut: 🎜rrreee🎜Ini akan mengkonfigurasi laluan permintaan GET Apabila mengakses /download
, index kaedah kod>DownloadController. 🎜🎜4. Mulakan pelayan 🎜Mulakan pelayan Hyperf untuk mendengar permintaan HTTP. Masukkan direktori akar projek Hyperf dalam terminal dan laksanakan arahan berikut: 🎜rrreee🎜Selepas pelayan dimulakan, anda boleh memuat turun fail dengan mengakses http://localhost:9501/download
. 🎜🎜Kesimpulan: 🎜Artikel ini memperkenalkan cara menggunakan rangka kerja Hyperf untuk memuat turun fail, termasuk mencipta pengawal muat turun, mengkonfigurasi penghalaan dan memulakan pelayan. Melalui kod sampel dalam artikel ini, anda boleh melaksanakan fungsi muat turun fail dengan mudah dalam projek Hyperf anda. Semoga artikel ini dapat membantu anda! 🎜Atas ialah kandungan terperinci Cara menggunakan rangka kerja Hyperf untuk memuat turun fail. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!