ホームページ バックエンド開発 PHP7 Laravel + Alibaba Cloud OSS により画像とテキストの分離アーキテクチャが完成

Laravel + Alibaba Cloud OSS により画像とテキストの分離アーキテクチャが完成

May 20, 2020 am 11:27 AM
1

このケースでは、Laravel5.6 + Alibaba Cloud OSS を使用して画像アップロード機能を完了します。実践的な情報が満載で、手順に従って完了できます。

環境をデプロイする前に、Alibaba Cloud プラットフォームに個人アカウントまたは企業アカウントのアカウントを登録する必要があります。登録が完了したら、プロジェクト内の access_key および access_secret 構成をコピーして、基本設定を完了します。プロジェクトの。

1. 新しいプロジェクトを作成し、Laravel 5.6 バージョンのフレームワーク コードをインストールします

1. 環境構成要件

Laravel には次の要件が満たされています:

PHP > ;= 7.1.3

OpenSSL PHP

PHP PDO拡張

PHP Mbstring拡張

PHP Tokenizer拡張

PHP XML拡張

PHP Ctype拡張

PHP JSON拡張

注: 上記の構成を満たす必要があります要件については詳しく説明しませんが、PHP 構文を見てください

2. Laravel5.6 フレームワークをインストールします

Laravel5.6 はプロジェクトの依存関係を管理するために Composer を使用します。したがって、Laravel5.6を使用する前に、Composerがマシンにインストールされていることを確認してください。

composer -v
ログイン後にコピー

Laravel + Alibaba Cloud OSS により画像とテキストの分離アーキテクチャが完成

注: Composer の具体的なインストールについては、上記のリンクを参照し、ドキュメントに従ってインストールしてください。次に、Larvael5.6 フレームワークを具体的にインストールします。コントロール ウィンドウに内容を入力します。 Windows オペレーティング システム)、インストールが完了するまで待ちます。

composer create-project --prefer-dist laravel/laravel blog
ログイン後にコピー

インストールが完了したら、次のコードを実行して、アプリケーションにランダムな文字列キーを設定します。

php artisan key:generate
ログイン後にコピー

ブラウザに http://localhost/blog/public/index.php と入力すると、以下のインターフェースが表示されれば正常にアクセスできます。

Laravel + Alibaba Cloud OSS により画像とテキストの分離アーキテクチャが完成

3.composer.json で Alibaba Cloud コンポーネント パッケージを設定します

require に "jacobcyl/ali-oss-storage": "^2.1"

"require": {
      "php": "^7.1.3",
      "fideloper/proxy": "^4.0",
      "laravel/framework": "5.8.*",
      "laravel/tinker": "^1.0",
      "jacobcyl/ali-oss-storage": "^2.1"
   },
ログイン後にコピー

を追加し、コマンドを実行します:

composer update
composer dumpautoload
ログイン後にコピー

Laravel + Alibaba Cloud OSS により画像とテキストの分離アーキテクチャが完成

コンポーネントがダウンロードされると、以下のようになります:

Laravel + Alibaba Cloud OSS により画像とテキストの分離アーキテクチャが完成

4. Alibaba Cloudのaccess_keyとaccess_secret設定を設定します(OSSの自動有効化)

これは非常に重要です:構成

ステップ 1: config/app.php のプロバイダーの下に

Jacobcyl\AliOSS\AliOssServiceProvider::class,
ログイン後にコピー

を追加します。 ステップ 2: app/filesystems.php のディスクの下に

'oss' => [
    'driver' => 'oss',
    'access_id' => env('OSS_ACCESS_ID', '填你自己的'),
    'access_key' => env('OSS_ACCESS_KEY', '填你自己的'),
    'bucket' => env('OSS_BUCKET', '填你自己的'),
    'endpoint' => env('OSS_ENDPOINT', 'oss-cn-hangzhou.aliyuncs.com'),
    'isCName' => false,
    'debug' => true,
],
ログイン後にコピー

を追加します。 ステップ 3: これに新しいファイル alioss.php ファイル

<?php
return [
    &#39;OSS_ACCESS_ID&#39; => env(&#39;OSS_ACCESS_ID&#39;, &#39;填你自己的&#39;),
    &#39;OSS_ACCESS_KEY&#39;=> env(&#39;OSS_ACCESS_KEY&#39;, &#39;填你自己的&#39;),
    &#39;OSS_ENDPOINT&#39; => env(&#39;OSS_ENDPOINT&#39;, &#39;oss-cn-hangzhou.aliyuncs.com&#39;),
    &#39;OSS_BUCKET&#39; => env(&#39;OSS_BUCKET&#39;, &#39;填你自己的&#39;),
    &#39;OSS_HOST&#39; => &#39;https://填你自己的.oss-cn-hangzhou.aliyuncs.com&#39;,//前台显示域名
    &#39;OSS_URL&#39; => &#39;https://填你自己的.oss-cn-hangzhou.aliyuncs.com&#39;, // CDN域名,没有CDN就和OSS_HOST一致即可
];
ログイン後にコピー

を作成します。ファイルがロードされました。

2. インターフェイスコントローラーメソッドを作成します

新しいコントローラーを作成します: UploadsController は操作を容易にするためにコントローラークラスを継承します。

ステップ 1: API ルートを作成する

Route::post(&#39;/index/image&#39;, &#39;\App\Http\Controllers\Index\UploadsController@index&#39;);
ログイン後にコピー


ステップ 2: コントローラーを作成し、画像 (コア コード) をアップロードする

public function index(Request $request) {
      $disk = \Storage::disk(&#39;oss&#39;);
      if (!isset($request->image)) {
      return $this->array_format(&#39;图片信息错误&#39; . __LINE__, 414);
      }
      switch ($request->source) {
      case &#39;file&#39;:
      if (!($request->hasFile(&#39;image&#39;) && $request->file(&#39;image&#39;)->isValid())) {
      return $this->array_format(&#39;图片信息错误&#39; . __LINE__, 414);
      }
            $file = $request->file(&#39;image&#39;);
            $image_str = @file_get_contents($file->getPathname());
            $base64_str = base64_encode($image_str);
            break;
        case &#39;url&#39;:
          $image_str = @file_get_contents($request->image);
          $base64_str = base64_encode($image_str);
          break;
        case &#39;base64&#39;:
          $base64_str = $request->image;
          break;
        default:
          return $this->array_format(&#39;图片类型错误&#39;, 414);
          break;
      }
      //获取图片信息
      $image_info = $this->base64_image_format($base64_str);
      if (!$image_info) {
      return $this->array_format(&#39;图片信息错误&#39; . __LINE__, 414);
      }
      if ($image_info[&#39;image_size&#39;] > 10 * 1024 * 1024) {
      return $this->array_format(&#39;图片信息太大&#39;, 414);
      }
      $image_path = &#39;uploads/image/&#39;. date(&#39;Ym&#39;);
      $image_name = $image_path . &#39;/&#39; . md5($image_info[&#39;image_str&#39;]) . &#39;.&#39; . $image_info[&#39;image_suffix&#39;];
      //上传图片
      $temp = $disk->put($image_name, $image_info[&#39;image_str&#39;]);
      if (!$temp) {
      return $this->array_format(&#39;上传失败&#39;, 414);
      }
      return $this->array_format(&#39;上传成功&#39;, 200, [
          &#39;image_name&#39; => $image_name,
          &#39;image_url&#39; => $disk->url($image_name),
      ]);
}
ログイン後にコピー

4. Postman ツール インターフェイスのテスト

Laravel + Alibaba Cloud OSS により画像とテキストの分離アーキテクチャが完成

パブリック アカウント (Laravel テクノロジー コミュニティ ) 「Alibaba Cloud OSS」と返信し、ケースのソースコードをダウンロードします。

以上がLaravel + Alibaba Cloud OSS により画像とテキストの分離アーキテクチャが完成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)