Maison > développement back-end > PHP7 > le corps du texte

Laravel + Alibaba Cloud OSS complète l'architecture de séparation des images et du texte

Mini
Libérer: 2020-05-21 09:03:23
original
156 Les gens l'ont consulté

Ce cas utilise Laravel5.6 + Alibaba Cloud OSS pour compléter la fonction de téléchargement d'images. Il regorge d'informations pratiques et peut être complété en suivant les étapes.

Avant de déployer l'environnement, nous devons enregistrer un compte sur la plateforme Alibaba Cloud, soit un compte personnel, soit un compte d'entreprise, une fois l'enregistrement terminé, copiez la configuration access_key et access_secret. dans le projet et les paramètres de base du projet sont terminés.

1. Créez un nouveau projet et installez la version Laravel5.6 du code du framework

1. 🎜>Laravel a certaines exigences système, votre serveur répond aux exigences suivantes :

PHP >= 7.1.3

OpenSSL PHP

Extension PHP PDO

Extension PHP Mbstring

Extension PHP Tokenizer

Extension PHP XML

Extension PHP Ctype

Extension PHP JSON

Remarque : Vous Les exigences de configuration ci-dessus doivent être remplies. Cela ne sera pas expliqué en détail. Veuillez vous référer à la syntaxe PHP

2 Installez le framework Laravel5.6

Laravel5.6 est géré à l'aide des dépendances du projet Composer. Par conséquent, avant d'utiliser Laravel5.6, assurez-vous que Composer est installé sur votre machine.

composer -v
Copier après la connexion

Laravel + Alibaba Cloud OSS complète larchitecture de séparation des images et du texte Remarque : Veuillez vous référer au lien ci-dessus pour l'installation spécifique de composer. Vous pouvez l'installer selon le document. Nous allons maintenant installer Larvael5. 6 spécifiquement et entrez le contenu dans la fenêtre de contrôle (Mon système d'exploitation Windows), attendez la fin de l'installation.

composer create-project --prefer-dist laravel/laravel blog
Copier après la connexion
Une fois l'installation terminée, exécutez le code suivant pour définir une clé de chaîne aléatoire pour l'application.
php artisan key:generate
Copier après la connexion

Entrez : http://localhost/blog/public/index.php dans le navigateur Lorsque vous voyez l'interface suivante, l'accès est normal.

Laravel + Alibaba Cloud OSS complète larchitecture de séparation des images et du texte3. Configurez le package de composants Alibaba Cloud dans composer.json

Ajoutez "jacobcyl/ dans require 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"
   },
Copier après la connexion

Ensuite, exécutez la commande :

composer update
composer dumpautoload
Copier après la connexion

Une fois le téléchargement du composant terminé, comme indiqué ci-dessous : Laravel + Alibaba Cloud OSS complète larchitecture de séparation des images et du texte

Laravel + Alibaba Cloud OSS complète larchitecture de séparation des images et du texte4. Configurez la configuration access_key et access_secret d'Alibaba Cloud (OSS l'active tout seul)

C'est très important : j'ai écrit un fichier séparé pour le faire Configuration

Étape 1 : Ajoutez :

Jacobcyl\AliOSS\AliOssServiceProvider::class,
Copier après la connexion

sous les fournisseurs dans config/app.php Étape 2 : Ajoutez

'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,
],
Copier après la connexion
< sous les disques dans app/filesystems.php 🎜>Étape 3 : Créez un nouveau fichier 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一致即可
];
Copier après la connexion

À ce stade, le fichier a été chargé.

2. Écrire les méthodes du contrôleur d'interface

Nouveau contrôleur : UploadsController hérite de la classe Controller pour une utilisation facile. Étape 1 : Écrire le routage de l'API

Route::post(&#39;/index/image&#39;, &#39;\App\Http\Controllers\Index\UploadsController@index&#39;);
Copier après la connexion

Étape 2 : Écrire le contrôleur et télécharger les images (code principal)

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),
      ]);
}
Copier après la connexion

Test de l'interface de l'outil Postman.


Le compte public (

Laravel Technology CommunityLaravel + Alibaba Cloud OSS complète larchitecture de séparation des images et du texte) répond "Alibaba Cloud OSS" et télécharge le code source du cas.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
1
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!