ThinkPHP6 を使用して OSS ファイルのアップロードおよびダウンロード操作を実装するにはどうすればよいですか?

PHPz
リリース: 2023-06-12 11:28:40
オリジナル
2708 人が閲覧しました

インターネット技術の継続的な発展に伴い、クラウド ストレージ サービスはますます注目を集めています。 Alibaba Cloud Object Storage (OSS) は、大量のデータを保存するために使用される、安全で安定した拡張性の高いクラウド ストレージ サービスです。この記事では、ThinkPHP6 フレームワークを使用して Alibaba Cloud OSS ファイルのアップロードおよびダウンロード操作を実装する方法を紹介します。

1. Alibaba Cloud OSS Bucket の作成

まず、Alibaba Cloud 公式 Web サイトでファイルを保存するための Bucket を作成する必要があります。バケットはクラウド内のフォルダーに相当し、Alibaba Cloud OSS にアップロードされたファイルを保存するために使用されます。バケットの作成方法はこの記事の範囲を超えていますが、Alibaba Cloud 公式 Web サイトで関連するチュートリアルを参照してください。

作成後、次の 3 つのパラメータを取得する必要があります:

1. AccessKeyId: OSS にアクセスするためのユーザー ID。
2. AccessKeySecret: OSS にアクセスするためのユーザー キー。
3. エンドポイント: OSS サービスのアドレス。

これらのパラメータは、後続のコード実装で使用されます。

2. Alibaba Cloud OSS SDK のインストール

Alibaba Cloud OSS SDK を使用する前に、インストールする必要があります。インストールには、composer を使用できます。コマンドは次のとおりです:

composer require aliyuncs/oss-sdk-php

インストールが完了したら、oss.php 構成ファイルを作成する必要があります。 configディレクトリ内にあります。設定ファイルには次の 3 つのパラメータが含まれている必要があります:

'accessKeyId' => 'Alibaba Cloud AccessKeyId',
'accessSecret' => 'Alibaba Cloud AccessKeySecret',
'endpoint' = > 'OSS サービス アドレス',

構成パラメータの取得を容易にするために、.env ファイルでこれらのパラメータを定義し、config ディレクトリに oss.php 構成ファイルを作成することもできます。以下に示す:

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

3. ファイル アップロード操作

Alibaba Cloud OSS SDK のインストールが完了し、パラメータを設定した後、ファイル アップロード操作を開始できます。コントローラーでアップロード メソッドを作成します。コードは次のとおりです:

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作成時に3つのパラメータを取得し、次にOSSClientインスタンスを作成し、request()->でアップロードされたファイルを取得します。 file('file')、getOriginalName() メソッドを使用してアップロードされたファイルの元の名前を取得し、getRealPath() メソッドを使用してアップロードされたファイルの一時ファイル パスを取得します。最後に、uploadFile() メソッドを使用して、

4. ファイルのダウンロード操作

ファイルのアップロード操作と同様に、ファイルのダウンロード操作でも Alibaba Cloud OSS SDK を使用する必要があります。次のコードを含むコントローラー内のメソッド:

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 を作成するときに 3 つのパラメーターを取得し、OSSClient インスタンスを作成する必要もあります。 $object を通じてダウンロードするファイルを取得し、getObject() メソッドを使用してファイルをローカルにダウンロードします。ファイルのダウンロード操作では、header()メソッドでファイルの種類やサイズなどの情報を設定し、最後にechoでファイルの内容を出力することでファイルのダウンロード操作を実現します。

上記は、ThinkPHP6 を使用して Alibaba Cloud OSS ファイルのアップロードおよびダウンロード操作を実装する方法の全内容です。この記事の紹介を通じて、読者は Alibaba Cloud OSS SDK の使い方をマスターし、クラウド ストレージ サービスについてより深く理解できるようになります。

以上がThinkPHP6 を使用して OSS ファイルのアップロードおよびダウンロード操作を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート