Rumah pembangunan bahagian belakang tutorial php Perisian tengah CakePHP: melaksanakan fungsi muat naik dan muat turun fail

Perisian tengah CakePHP: melaksanakan fungsi muat naik dan muat turun fail

Jul 30, 2023 pm 03:09 PM
Muat naik fail Muat turun fail cakephp middleware

Perisian tengah CakePHP: laksanakan fungsi muat naik dan muat turun fail

Dengan perkembangan Internet, fungsi muat naik dan muat turun fail menjadi semakin biasa. Apabila membangunkan aplikasi web, kami selalunya perlu melaksanakan muat naik dan muat turun fail. Apabila membangunkan aplikasi menggunakan rangka kerja CakePHP, middleware ialah alat yang sangat berguna yang boleh membantu kami memudahkan kod dan melaksanakan fungsi muat naik dan muat turun fail. Seterusnya, saya akan memperkenalkan cara menggunakan middleware CakePHP untuk melaksanakan fungsi muat naik dan muat turun fail.

Mula-mula, kita perlu mencipta kelas middleware baharu, buat fail bernama FileHandlerMiddleware.php dalam direktori src/Middleware dan tambah kod berikut: 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);
    }
}
Salin selepas log masuk

在上述代码中,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;
}
Salin selepas log masuk

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

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

public function upload()
{
    // 显示上传表单
}
Salin selepas log masuk

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

<form method="POST" action="/upload" enctype="multipart/form-data">
    <input type="file" name="file" />
    <button type="submit">上传</button>
</form>
Salin selepas log masuk

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

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

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

/download/{file_name}
Salin selepas log masuk

例如,要下载名为example.jpg

/download/example.jpg
Salin selepas log masuk
Dalam kod di atas, FileHandlerMiddleware ialah kelas middleware untuk muat naik dan muat turun fail. Apabila permintaan POST diterima dan permintaan itu mengandungi data bernama fail, middleware akan menyimpan fail ke folder muat naik dan Mengembalikan JSON yang berjaya tindak balas. Apabila menerima permintaan dengan parameter file, middleware akan mengembalikan kandungan fail mengikut nama fail sebagai respons.

Seterusnya, kita perlu mendaftarkan middleware ke dalam aplikasi. Buka fail src/Application.php dan daftarkan middleware dalam kaedah middleware kelas Application. Kodnya adalah seperti berikut:

rrreee

Dalam kod di atas, kami menggunakan kaedah add untuk mendaftarkan perisian tengah FileHandlerMiddleware ke dalam baris gilir middleware. Gunakan baris gilir middleware untuk memproses berbilang middleware dalam urutan dan laksanakan middleware berdaftar sebelum melaksanakan tindakan pengawal.

Kini, kita boleh menggunakan fungsi muat naik dan muat turun fail. Katakan kita mempunyai kaedah pengawal untuk mengendalikan muat naik fail: 🎜rrreee🎜 Kemudian, tambahkan kod borang berikut dalam fail paparan yang sepadan: 🎜rrreee🎜 Dalam kod di atas, kami mencipta borang yang mengandungi medan muat naik fail dan butang hantar. Atribut enctype borang ditetapkan kepada multipart/form-data, yang diperlukan untuk muat naik fail. 🎜🎜Apabila pengguna memilih fail dan mengklik butang hantar, fail tersebut akan dimuat naik ke pelayan dan respons JSON yang berjaya akan dikembalikan. 🎜🎜Selain itu, kami juga boleh menggunakan URL berikut untuk memuat turun fail: 🎜rrreee🎜Sebagai contoh, untuk memuat turun fail bernama example.jpg, anda boleh menggunakan URL berikut: 🎜rrreee🎜Fail akan berada dalam format yang dimuat turun Kembali kepada pengguna. 🎜🎜Ringkasan: 🎜🎜Artikel ini memperkenalkan cara menggunakan perisian tengah CakePHP untuk melaksanakan fungsi muat naik dan muat turun fail. Dengan mencipta kelas middleware baharu, kami boleh mengendalikan permintaan muat naik dan muat turun fail serta mengembalikan respons yang sesuai. Middleware membantu kami memudahkan kod dan meningkatkan kefungsian aplikasi. Saya harap artikel ini akan membantu anda memahami dan menggunakan perisian tengah CakePHP. 🎜

Atas ialah kandungan terperinci Perisian tengah CakePHP: melaksanakan fungsi muat naik dan muat turun fail. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Operasi pembukaan Python selepas memuat turun fail Operasi pembukaan Python selepas memuat turun fail Apr 03, 2024 pm 03:39 PM

Python menyediakan pilihan berikut untuk membuka fail yang dimuat turun: open() function: buka fail menggunakan laluan dan mod yang ditentukan (seperti 'r', 'w', 'a'). Pustaka permintaan: Gunakan kaedah muat turun() untuk memberikan nama secara automatik dan membuka fail secara terus. Pustaka Pathlib: Gunakan kaedah write_bytes() dan read_text() untuk menulis dan membaca kandungan fail.

Cara menggunakan Laravel untuk melaksanakan fungsi muat naik dan muat turun fail Cara menggunakan Laravel untuk melaksanakan fungsi muat naik dan muat turun fail Nov 02, 2023 pm 04:36 PM

Cara menggunakan Laravel untuk melaksanakan fungsi muat naik dan muat turun fail Laravel ialah rangka kerja Web PHP popular yang menyediakan pelbagai fungsi dan alatan untuk menjadikan pembangunan aplikasi Web lebih mudah dan cekap. Salah satu fungsi yang biasa digunakan ialah muat naik dan muat turun fail. Artikel ini akan memperkenalkan cara menggunakan Laravel untuk melaksanakan fungsi muat naik dan muat turun fail, serta menyediakan contoh kod khusus. Muat naik fail Muat naik fail merujuk kepada memuat naik fail tempatan ke pelayan untuk penyimpanan. Dalam Laravel kita boleh menggunakan muat naik fail

Bagaimana untuk menggunakan fungsi PHP untuk memuat naik dan memuat turun lampiran untuk menghantar dan menerima e-mel? Bagaimana untuk menggunakan fungsi PHP untuk memuat naik dan memuat turun lampiran untuk menghantar dan menerima e-mel? Jul 25, 2023 pm 08:17 PM

Bagaimana untuk menggunakan fungsi PHP untuk memuat naik dan memuat turun lampiran untuk menghantar dan menerima e-mel? Dengan perkembangan pesat teknologi komunikasi moden, e-mel telah menjadi cara penting untuk orang ramai berkomunikasi dan menghantar maklumat dalam kehidupan seharian. Dalam pembangunan web, kami sering menghadapi keperluan untuk menghantar dan menerima e-mel dengan lampiran. Sebagai bahasa skrip sebelah pelayan yang berkuasa, PHP menyediakan pelbagai fungsi dan perpustakaan kelas yang boleh memudahkan proses pemprosesan e-mel. Artikel ini akan memperkenalkan cara menggunakan fungsi PHP untuk memuat naik dan memuat turun lampiran untuk menghantar dan menerima e-mel. Emel dihantar dahulu, kami

Laksanakan muat naik dan muat turun fail dalam dokumen Workerman Laksanakan muat naik dan muat turun fail dalam dokumen Workerman Nov 08, 2023 pm 06:02 PM

Untuk melaksanakan muat naik dan muat turun fail dalam dokumen Workerman, contoh kod khusus diperlukan. Pengenalan: Workerman ialah rangka kerja komunikasi rangkaian tak segerak PHP berprestasi tinggi yang ringkas, cekap dan mudah digunakan. Dalam pembangunan sebenar, muat naik dan muat turun fail adalah keperluan fungsi biasa Artikel ini akan memperkenalkan cara menggunakan rangka kerja Workerman untuk melaksanakan muat naik dan muat turun fail, dan memberikan contoh kod khusus. 1. Muat naik fail: Muat naik fail merujuk kepada operasi memindahkan fail pada komputer tempatan ke pelayan. Yang berikut digunakan

Bagaimana untuk menggunakan gRPC untuk melaksanakan muat naik fail di Golang? Bagaimana untuk menggunakan gRPC untuk melaksanakan muat naik fail di Golang? Jun 03, 2024 pm 04:54 PM

Bagaimana untuk melaksanakan muat naik fail menggunakan gRPC? Buat definisi perkhidmatan sokongan, termasuk permintaan dan mesej respons. Pada klien, fail yang hendak dimuat naik dibuka dan dibahagikan kepada beberapa bahagian, kemudian distrim ke pelayan melalui aliran gRPC. Di bahagian pelayan, ketulan fail diterima dan disimpan ke dalam fail. Pelayan menghantar respons selepas muat naik fail selesai untuk menunjukkan sama ada muat naik berjaya.

Cara menggunakan rangka kerja Hyperf untuk memuat turun fail Cara menggunakan rangka kerja Hyperf untuk memuat turun fail Oct 21, 2023 am 08:23 AM

Cara menggunakan rangka kerja Hyperf untuk memuat turun fail Pengenalan: Muat turun fail adalah 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 memulakan, pastikan anda telah memasang rangka kerja Hyperf dan berjaya mencipta aplikasi Hyperf. 2. Buat pengawal muat turun fail Mula-mula, kita perlu mencipta pengawal untuk mengendalikan permintaan muat turun fail. Buka terminal dan masuk

Bagaimana untuk menyelesaikan pengecualian muat naik fail Java (FileUploadException) Bagaimana untuk menyelesaikan pengecualian muat naik fail Java (FileUploadException) Aug 18, 2023 pm 12:11 PM

Cara menyelesaikan pengecualian muat naik fail Java (FileUploadException Satu masalah yang sering dihadapi dalam pembangunan web ialah FileUploadException (pengecualian muat naik fail). Ia mungkin berlaku disebabkan oleh pelbagai sebab seperti saiz fail melebihi had, format fail tidak sepadan atau konfigurasi pelayan yang salah. Artikel ini menerangkan beberapa cara untuk menyelesaikan masalah ini dan menyediakan contoh kod yang sepadan. Hadkan saiz fail yang dimuat naik Dalam kebanyakan senario, hadkan saiz fail

Memuat Naik dan Memproses Fail dalam Laravel: Mengurus Fail Yang Dimuat Naik Pengguna Memuat Naik dan Memproses Fail dalam Laravel: Mengurus Fail Yang Dimuat Naik Pengguna Aug 13, 2023 pm 06:45 PM

Memuat Naik dan Memproses Fail dalam Laravel: Mengurus Fail Yang Dimuat Naik Pengguna Pengenalan: Muat naik fail ialah keperluan fungsi yang sangat biasa dalam aplikasi web moden. Dalam rangka kerja Laravel, muat naik dan pemprosesan fail menjadi sangat mudah dan cekap. Artikel ini akan memperkenalkan cara mengurus fail yang dimuat naik pengguna dalam Laravel, termasuk pengesahan, penyimpanan, pemprosesan dan paparan muat naik fail. 1. Muat naik fail Muat naik fail merujuk kepada memuat naik fail daripada klien ke pelayan. Dalam Laravel, muat naik fail sangat mudah dikendalikan. pertama,

See all articles