首頁  >  文章  >  php框架  >  實作Workerman文件中的文件上傳與下載

實作Workerman文件中的文件上傳與下載

WBOY
WBOY原創
2023-11-08 18:02:161278瀏覽

實作Workerman文件中的文件上傳與下載

實作Workerman文件中的檔案上傳與下載,需要具體程式碼範例

引言:
Workerman是一款高效能的PHP非同步網路通訊框架,具備簡潔、高效、易用等特質。在實際開發中,文件上傳和下載是常見的功能需求,本文將介紹如何使用Workerman框架實現文件的上傳和下載,並給出具體的程式碼範例。

一、檔案上傳:

檔案上傳是指將本機電腦上的檔案傳送至伺服器端的操作。以下是使用Workerman實作檔案上傳的具體程式碼範例:

  1. 建立伺服器端程式碼
<?php
use WorkermanWorker;
require_once __DIR__ . '/Workerman/Autoloader.php';

$worker = new Worker('tcp://0.0.0.0:8080');
$worker->onMessage = function($connection, $data) {
    if(isset($data['type']) && $data['type'] === 'file'){
        if (isset($data['content']) && isset($data['fileName'])) {
            file_put_contents($data['fileName'], $data['content']);
            $connection->send('文件上传成功!');
        } else {
            $connection->send('文件上传失败!');
        }
    }
};
Worker::runAll();
  1. 建立客戶端程式碼
  2. ##
    <?php
    use WorkermanConnectionAsyncTcpConnection;
    require_once __DIR__ . '/Workerman/Autoloader.php';
    
    $connection = new AsyncTcpConnection('tcp://127.0.0.1:8080');
    $connection->onConnect = function() use ($connection){
        $connection->send(array('type' => 'file', 'content' => file_get_contents('test.txt'), 'fileName' => 'test.txt'));
    };
    $connection->onMessage = function($connection, $data){
        echo $data . PHP_EOL;
    };
    $connection->connect();
    AsyncWorker::runAll();
上述程式碼中,伺服器端綁定了一個TCP端口,當有連接時,判斷傳送過來的資料是否為檔案內容,若是則將檔案內容寫入檔案。客戶端連接到伺服器端後,將本機的test.txt檔案內容傳送給伺服器端。

二、檔案下載:

檔案下載是指將伺服器端的檔案傳輸至本機的操作。以下是使用Workerman實作檔案下載的具體程式碼範例:

    建立伺服器端程式碼
  1. <?php
    use WorkermanWorker;
    require_once __DIR__ . '/Workerman/Autoloader.php';
    
    $worker = new Worker('tcp://0.0.0.0:8080');
    $worker->onMessage = function($connection, $data) {
        if(isset($data['type']) && $data['type'] === 'file'){
            if (isset($data['fileName']) && file_exists($data['fileName'])) {
                $connection->send(file_get_contents($data['fileName']));
            } else {
                $connection->send('文件不存在!');
            }
        }
    };
    Worker::runAll();
    建立客戶端程式碼
  1. ##
    <?php
    use WorkermanConnectionAsyncTcpConnection;
    require_once __DIR__ . '/Workerman/Autoloader.php';
    
    $connection = new AsyncTcpConnection('tcp://127.0.0.1:8080');
    $connection->onConnect = function() use ($connection){
        $connection->send(array('type' => 'file', 'fileName' => 'test.txt'));
    };
    $connection->onMessage = function($connection, $data){
        file_put_contents('download.txt', $data);
        echo '文件下载成功!' . PHP_EOL;
    };
    $connection->connect();
    AsyncWorker::runAll();
  2. 在上述程式碼中,伺服器端綁定了一個TCP端口,當有連接時,判斷傳送過來的資料是否為檔案名,並判斷檔案是否存在,若存在則將檔案內容傳送給客戶端。客戶端連接到伺服器端後,將要下載的檔案名稱傳送給伺服器端,伺服器端將檔案內容傳送給客戶端,並將內容寫入本機download.txt檔案。

結語:

透過上述程式碼範例,我們可以看到使用Workerman框架實作檔案上傳和下載非常簡單。透過簡單的設定和編寫程式碼,我們可以很方便地實現文件的上傳和下載功能,提高了Web應用程式的使用者體驗,提升了開發效率。希望這篇文章對您有幫助。

以上是實作Workerman文件中的文件上傳與下載的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn