怎樣使用ThinkPHP6實現(xiàn)OSS文件上傳和下載操作?

隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,云存儲服務(wù)越來越受到人們的重視。阿里云對象存儲(oss)是一個安全、穩(wěn)定、高擴展性的云端存儲服務(wù),用于存儲海量數(shù)據(jù)。本文將介紹如何使用thinkphp6框架實現(xiàn)阿里云oss文件上傳和下載操作。

一、創(chuàng)建阿里云OSS Bucket

首先,需要在阿里云官網(wǎng)上創(chuàng)建一個用于存儲文件的Bucket。Bucket相當(dāng)于云端的文件夾,用于存儲上傳到阿里云OSS的文件。Bucket的創(chuàng)建方式不在本文的介紹范圍之內(nèi),讀者可在阿里云官網(wǎng)平臺查閱相關(guān)教程。

創(chuàng)建完畢后,需要獲取以下三個參數(shù):

1、AccessKeyId:訪問OSS的用戶ID。
2、AccessKeySecret:訪問OSS的用戶密鑰。
3、Endpoint:OSS服務(wù)的地址。

立即學(xué)習(xí)PHP免費學(xué)習(xí)筆記(深入)”;

這些參數(shù)將在后續(xù)代碼實現(xiàn)中使用。

二、安裝阿里云OSS SDK

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

composer require aliyuncs/oss-sdk-php

安裝完畢后,需要在config目錄下創(chuàng)建oss.php配置文件。配置文件中需要包含以下三個參數(shù):

‘accessKeyId’ => ‘阿里云AccessKeyId’,
‘accessSecret’ => ‘阿里云AccessKeySecret’,
‘endpoint’ => ‘OSS服務(wù)地址’,

為了方便配置參數(shù)的獲取,也可以在.env文件中定義這些參數(shù),在config目錄下創(chuàng)建一個oss.php配置文件,如下所示:

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

三、文件上傳操作

在完成了阿里云OSS SDK的安裝和參數(shù)的配置后,就可以開始進行文件上傳操作了。在controller中創(chuàng)建upload方法,代碼如下:

use OSSOssClient;
use OSSCoreOssException;

public function upload()

{     $accessKeyId = config('oss.accessKeyId');     $accessKeySecret = config('oss.accessSecret');     $endpoint = config('oss.endpoint');     $bucket = 'your_bucket_name';      // 創(chuàng)建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 "文件上傳失敗";     }  } 

在方法中首先獲取之前創(chuàng)建Bucket時的三個參數(shù),然后創(chuàng)建OSSClient實例。接著通過request()->file(‘file’)獲取上傳的文件,使用getOriginalName()方法獲取上傳文件的原名稱,使用getRealPath()方法獲取上傳文件的臨時文件路徑。最后,使用uploadFile()方法將文件上傳到阿里云OSS。

四、文件下載操作

與文件上傳操作類似,文件下載操作也需要使用阿里云OSS SDK。在controller中創(chuàng)建download方法,代碼如下:

use OSSOssClient;
use OSSCoreOssException;

public function download()

{     $accessKeyId = config('oss.accessKeyId');     $accessKeySecret = config('oss.accessSecret');     $endpoint = config('oss.endpoint');     $bucket = 'your_bucket_name';      // 創(chuàng)建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 "文件下載失敗";     }  } 

在方法中同樣需要獲取之前創(chuàng)建Bucket時的三個參數(shù),然后創(chuàng)建OSSClient實例。通過$object獲取要下載的文件,使用getObject()方法將文件下載到本地。文件下載操作可以通過header()方法設(shè)置文件類型、大小等信息,最后通過echo輸出文件內(nèi)容,實現(xiàn)文件下載操作。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊7 分享