Heim > Backend-Entwicklung > PHP7 > Hauptteil

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

Mini
Freigeben: 2020-05-21 09:03:23
Original
207 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren
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
Nach dem Login kopieren

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"
   },
Nach dem Login kopieren

Führen Sie dann den Befehl aus:

composer update
composer dumpautoload
Nach dem Login kopieren

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,
Nach dem Login kopieren

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,
],
Nach dem Login kopieren
< unter „Festplatten“ in app/filesystems.php hinzu 🎜>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一致即可
];
Nach dem Login kopieren

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;);
Nach dem Login kopieren

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),
      ]);
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
1
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage