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.6Laravel5.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
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
php artisan key:generate
3. 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" },
composer update composer dumpautoload
Une fois le téléchargement du composant terminé, comme indiqué ci-dessous :
4. 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,
'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, ],
<?php return [ 'OSS_ACCESS_ID' => env('OSS_ACCESS_ID', '填你自己的'), 'OSS_ACCESS_KEY'=> env('OSS_ACCESS_KEY', '填你自己的'), 'OSS_ENDPOINT' => env('OSS_ENDPOINT', 'oss-cn-hangzhou.aliyuncs.com'), 'OSS_BUCKET' => env('OSS_BUCKET', '填你自己的'), 'OSS_HOST' => 'https://填你自己的.oss-cn-hangzhou.aliyuncs.com',//前台显示域名 'OSS_URL' => 'https://填你自己的.oss-cn-hangzhou.aliyuncs.com', // CDN域名,没有CDN就和OSS_HOST一致即可 ];
À ce stade, le fichier a été chargé.
2. Écrire les méthodes du contrôleur d'interfaceNouveau contrôleur : UploadsController hérite de la classe Controller pour une utilisation facile. Étape 1 : Écrire le routage de l'API
Route::post('/index/image', '\App\Http\Controllers\Index\UploadsController@index');
public function index(Request $request) { $disk = \Storage::disk('oss'); if (!isset($request->image)) { return $this->array_format('图片信息错误' . __LINE__, 414); } switch ($request->source) { case 'file': if (!($request->hasFile('image') && $request->file('image')->isValid())) { return $this->array_format('图片信息错误' . __LINE__, 414); } $file = $request->file('image'); $image_str = @file_get_contents($file->getPathname()); $base64_str = base64_encode($image_str); break; case 'url': $image_str = @file_get_contents($request->image); $base64_str = base64_encode($image_str); break; case 'base64': $base64_str = $request->image; break; default: return $this->array_format('图片类型错误', 414); break; } //获取图片信息 $image_info = $this->base64_image_format($base64_str); if (!$image_info) { return $this->array_format('图片信息错误' . __LINE__, 414); } if ($image_info['image_size'] > 10 * 1024 * 1024) { return $this->array_format('图片信息太大', 414); } $image_path = 'uploads/image/'. date('Ym'); $image_name = $image_path . '/' . md5($image_info['image_str']) . '.' . $image_info['image_suffix']; //上传图片 $temp = $disk->put($image_name, $image_info['image_str']); if (!$temp) { return $this->array_format('上传失败', 414); } return $this->array_format('上传成功', 200, [ 'image_name' => $image_name, 'image_url' => $disk->url($image_name), ]); }
Test de l'interface de l'outil Postman.
Laravel Technology Community) 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!