Laravel 使用腾讯云 cos 进行图片上传使用详解

使用指南

Laravel版本

我用的版本是:Laravel 6.2

开通腾讯云COS

具体的请看详情:cloud.tencent.com/document/product...

Laravel 使用腾讯云 cos 进行图片上传使用详解

安装插件

composer require "freyo/flysystem-qcloud-cos-v5:^2.0"

Laravel 使用腾讯云 cos 进行图片上传使用详解

具体使用

配置 config/filesystems.php

'cloud' => env('FILESYSTEM_CLOUD', 'cosv5'),

'disks' => [

    // 腾讯云 cos 存储
    'cosv5' => [
        'driver' => 'cosv5',
        'region'        => env('COSV5_REGION', 'ap-shanghai'), // 需要设置
        'credentials'   => [
            'appId'     => env('COSV5_APP_ID'), // 需要设置
            'secretId'  => env('COSV5_SECRET_ID'), // 需要设置
            'secretKey' => env('COSV5_SECRET_KEY'), // 需要设置
        ],
        'timeout'         => env('COSV5_TIMEOUT', 60),
        'connect_timeout' => env('COSV5_CONNECT_TIMEOUT', 60),
        'bucket'          => env('COSV5_BUCKET'), // 需要设置
        'cdn'             => env('COSV5_CDN'),
        'scheme'          => env('COSV5_SCHEME', 'https'),
    ],

],

查看 region和bucket 参数:console.cloud.tencent.com/cos5/buc...

Laravel 使用腾讯云 cos 进行图片上传使用详解

获取API密匙:console.cloud.tencent.com/cam/capi

Laravel 使用腾讯云 cos 进行图片上传使用详解

上传代码

$file = $request->avatar; // 获取上传文件对象,name 为 avatar
$disk = \Storage::disk('cosv5');
$path = $disk->put('images', $file); // images 为存储桶里面的目录名称;这里生成的是唯一的文件名,也可指定文件名,具体请看下方的文档链接
$url = $disk->url($path); // 获取上传文件的url
  • 注意事项
    • 无需在 config/app.php 引入 providers
    • 无需进行任何的 use 引入
    • 具体的使用可查看文档:文件存储《Laravel 6 中文文档》
    • 获取的url,默认情况下是不能直接访问图片的,如果需要访问图片,需要修改存储桶的访问权限:公有读私有写
      Laravel 使用腾讯云 cos 进行图片上传使用详解

Laravel-admin上传图片

配置 config/admin.php
'upload' => [
    // 只需把 disk 设为 cosv5 就可以了
    'disk' => 'cosv5',
    .
    .
    .
],

使用技巧

'upload' => [
    // 设置多个磁盘
    'disk' => 'cosv5', 'admin',
    .
    .
    .
],

// 使用的时候指定磁盘:->disk($disk_name)
$form->image('icon', '图标')->disk('admin')->uniqueName()->move('images/icon')->required();

需要注意的是: 如果使用多个磁盘进行上传,路径的显示有些问题,需要保存绝对路径才行,这里我还没处理好,有使用过的请指教下怎么处理。

使用自定义源站域名

如果要使用自己的域名替换默认的域名,只需要两个步骤:

  • 新增【自定义源站域名】

Laravel 使用腾讯云 cos 进行图片上传使用详解

  • 设置对应的域名解析

Laravel 使用腾讯云 cos 进行图片上传使用详解
如有疑问可查看官方文档:cloud.tencent.com/document/product...

流程基本上就这样了,公司项目刚好要用到云存储。完成后写个笔记,方便自己以后查阅,也希望能帮助到有需要的朋友。2021-09-04。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 4

laravel 9 好像不行了

2年前 评论
夜游人 (楼主) 2年前

Driver [cosv5] is not supported.

2年前 评论
夜游人 (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!