首頁 >php框架 >ThinkPHP >怎樣使用ThinkPHP6實作OSS檔案上傳和下載操作?

怎樣使用ThinkPHP6實作OSS檔案上傳和下載操作?

PHPz
PHPz原創
2023-06-12 11:28:402722瀏覽

隨著網路技術的不斷發展,雲端儲存服務越來越受到人們的重視。阿里雲物件儲存(OSS)是一個安全、穩定、高擴充性的雲端儲存服務,用於儲存海量資料。本文將介紹如何使用ThinkPHP6框架實現阿里雲OSS檔案上傳下載操作。

一、創建阿里雲OSS Bucket

首先,需要在阿里雲官網上建立一個用於儲存檔案的Bucket。 Bucket相當於雲端的資料夾,用來儲存上傳到阿里雲OSS的檔案。 Bucket的創建方式不在本文的介紹範圍之內,讀者可在阿里雲官網平台查閱相關教學。

建立完畢後,需要取得以下三個參數:

1、AccessKeyId:存取OSS的使用者ID。
2、AccessKeySecret:存取OSS的使用者金鑰。
3、Endpoint:OSS服務的位址。

這些參數將在後續程式碼實作中使用。

二、安裝阿里雲OSS SDK

在使用阿里雲OSS SDK之前,需要先安裝它。可以使用composer進行安裝,指令如下:

composer require aliyuncs/oss-sdk-php

安裝完畢後,需要在config目錄下建立oss.php設定檔。設定檔中需要包含以下三個參數:

'accessKeyId' => '阿里雲AccessKeyId',
'accessSecret' => '阿里雲AccessKeySecret',
'endpoint' = > 'OSS服務位址',

為了方便設定參數的獲取,也可以在.env檔中定義這些參數,在config目錄下建立一個oss.php設定文件,如下所示:

'accessKeyId' => env('OSS_ACCESS_KEY_ID'),
'accessSecret' => env('OSS_ACCESS_KEY_SECRET'),
'endpoint' => env('OSS_ENDPOINT'),

三、檔案上傳操作

在完成了阿里雲OSS SDK的安裝和參數的設定後,就可以開始進行檔案上傳操作了。在controller中建立upload方法,程式碼如下:

##use OSSOssClient;

use OSSCoreOssException;

public function upload()

{
    $accessKeyId = config('oss.accessKeyId');
    $accessKeySecret = config('oss.accessSecret');
    $endpoint = config('oss.endpoint');
    $bucket = 'your_bucket_name';

    // 创建OSSClient实例
    try {
        $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    } catch (OssException $e) {
        printf(__FUNCTION__ . "阿里云OSS连接失败:error[%s]

", $e-> getMessage());

        return;
    }

    // 获取文件
    $file = request()->file('file');
    if (!$file) {
        return "上传文件不能为空";
    }

    // 上传文件
    $fileName = $file->getOriginalName();
    $filePath = $file->getRealPath();
    try {
        $result = $ossClient->uploadFile($bucket, $fileName, $filePath);
    } catch (OssException $e) {
        return "文件上传失败";
    }

    if (isset($result['oss-request-url'])) {
        return "文件上传成功";
    } else {
        return "文件上传失败";
    }

}

在方法中先取得先前建立Bucket時的三個參數,然後建立OSSClient實例。接著透過request()->file('file')取得上傳的文件,使用getOriginalName()方法取得上傳檔案的原名稱,使用getRealPath()方法取得上傳檔案的臨時檔案路徑。最後,使用uploadFile()方法將檔案上傳到阿里雲OSS。

四、檔案下載操作

與檔案上傳操作類似,檔案下載作業也需要使用阿里雲OSS SDK。在controller中建立download方法,程式碼如下:

use OSSOssClient;

use OSSCoreOssException;

public function download()

{
    $accessKeyId = config('oss.accessKeyId');
    $accessKeySecret = config('oss.accessSecret');
    $endpoint = config('oss.endpoint');
    $bucket = 'your_bucket_name';

    // 创建OSSClient实例
    try {
        $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
    } catch (OssException $e) {
        printf(__FUNCTION__ . "阿里云OSS连接失败:error[%s]

", $e->getMessage());

        return;
    }

    // 获取要下载的文件名称
    $object = 'your_object_name';

    // 下载文件
    $content = '';
    try {
        $content = $ossClient->getObject($bucket, $object);
    } catch (OssException $e) {
        return "指定的文件不存在";
    }

    if ($content !== '') {
        // 文件下载操作
    } else {
        return "文件下载失败";
    }

}

在方法中同樣需要取得先前建立Bucket時的三個參數,然後建立OSSClient實例。透過$object取得要下載的文件,使用getObject()方法將文件下載到本機。文件下載操作可以透過header()方法設定文件類型、大小等信息,最後透過echo輸出文件內容,實現文件下載操作。

以上就是如何使用ThinkPHP6實現阿里雲OSS檔案上傳下載作業的全部內容。透過本文的介紹,讀者可以掌握阿里雲OSS SDK的使用方法,更深入了解雲端儲存服務。

以上是怎樣使用ThinkPHP6實作OSS檔案上傳和下載操作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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