Heim  >  Artikel  >  Backend-Entwicklung  >  Laravel + Alibaba Cloud OSS vervollständigt die Bild- und Texttrennarchitektur

Laravel + Alibaba Cloud OSS vervollständigt die Bild- und Texttrennarchitektur

Mini
MiniOriginal
2020-05-20 11:27:52198Durchsuche

In diesem Fall wird Laravel5.6 + Alibaba Cloud OSS verwendet, um die Bild-Upload-Funktion abzuschließen. Sie enthält viele praktische Informationen und kann durch Befolgen der Schritte abgeschlossen werden.

Bevor wir die Umgebung bereitstellen, müssen wir ein Konto auf der Alibaba Cloud-Plattform registrieren. Nachdem die Registrierung abgeschlossen ist, kopieren Sie die Konfiguration „access_key“ und „access_secret“. Das Projekt ist abgeschlossen und die Grundeinstellungen für das Projekt sind abgeschlossen.

1. Erstellen Sie ein neues Projekt und installieren Sie die Laravel5.6-Version des Framework-Codes

1. Umgebungskonfigurationsanforderungen

Laravel hat einige Systemanforderungen, Ihr Server erfüllt die folgenden Anforderungen:

PHP >= 7.1.3

OpenSSL PHP

PHP PDO-Erweiterung

PHP Mbstring-Erweiterung

PHP Tokenizer-Erweiterung

PHP XML-Erweiterung

PHP Ctype-Erweiterung

PHP JSON-Erweiterung

Hinweis : Sie müssen die oben genannten Konfigurationsanforderungen erfüllen. Bitte beachten Sie die PHP-Syntax

Laravel5.6 wird mithilfe von Composer-Projektabhängigkeiten verwaltet. Stellen Sie daher vor der Verwendung von Laravel5.6 sicher, dass Composer auf Ihrem Computer installiert ist.

composer -v

Laravel + Alibaba Cloud OSS vervollständigt die Bild- und Texttrennarchitektur Hinweis: Bitte beachten Sie den Link oben für die spezifische Installation von Composer. Sie können es gemäß dem Dokument installieren. 6-Framework speziell und geben Sie den Inhalt in das Kontrollfenster ein (Mein Windows-Betriebssystem), warten Sie, bis die Installation abgeschlossen ist.

composer create-project --prefer-dist laravel/laravel blog
Führen Sie nach Abschluss der Installation den folgenden Code aus, um einen zufälligen Zeichenfolgenschlüssel für die Anwendung festzulegen.
php artisan key:generate

Geben Sie im Browser http://localhost/blog/public/index.php ein. Wenn Sie die folgende Oberfläche sehen, ist der Zugriff normal.

Laravel + Alibaba Cloud OSS vervollständigt die Bild- und Texttrennarchitektur3. Konfigurieren Sie das Alibaba Cloud-Komponentenpaket in Composer.json

Fügen Sie „jacobcyl/ in require“ hinzu 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"
   },

Führen Sie dann den Befehl aus:

composer update
composer dumpautoload

Nachdem der Komponenten-Download abgeschlossen ist, wie unten gezeigt: Laravel + Alibaba Cloud OSS vervollständigt die Bild- und Texttrennarchitektur

Laravel + Alibaba Cloud OSS vervollständigt die Bild- und Texttrennarchitektur4. Konfigurieren Sie Alibaba Cloud access_key und access_secret-Konfiguration (OSS aktiviert es selbst)

Das ist sehr wichtig: Ich habe geschrieben eine separate Datei, um dies zu tun. Konfiguration

Schritt 1: Fügen Sie Folgendes hinzu:

Jacobcyl\AliOSS\AliOssServiceProvider::class,

unter „Provider“ in config/app.php. Schritt 2: Fügen Sie

'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,
],
Schritt 3: Erstellen Sie eine neue Datei 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一致即可
];

An diesem Punkt wurde die Datei geladen.

2. Schnittstellen-Controller-Methoden schreiben

Neuer Controller: UploadsController erbt die Controller-Klasse für eine einfache Bedienung. Schritt 1: API-Routing schreiben

Route::post(&#39;/index/image&#39;, &#39;\App\Http\Controllers\Index\UploadsController@index&#39;);

Schritt 2: Controller schreiben und Bilder hochladen (Kerncode)

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 Tool Interface Test


Das öffentliche Konto (

Laravel Technology CommunityLaravel + Alibaba Cloud OSS vervollständigt die Bild- und Texttrennarchitektur) hat mit „Alibaba Cloud OSS“ geantwortet und den Fallquellcode heruntergeladen.

Das obige ist der detaillierte Inhalt vonLaravel + Alibaba Cloud OSS vervollständigt die Bild- und Texttrennarchitektur. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn