在 Laravel 上将图片上传到七牛云

由于服务器的资源是有限的,我们为了节省服务器的资源,通常会把一些图片文件放到第三方服务器中。比如:七牛云、阿里云、腾讯云等等。这里就记录一下怎么在 Laravel 中将图片上传到七牛云上。

在这里我们选择了 overtrue/laravel-filesystem-qiniu 扩展包,在项目根目录运行:

composer require overtrue/laravel-filesystem-qiniu

安装完成之后,我们需要在 config/app.php 中注册 Overtrue\LaravelFilesystem\Qiniu\QiniuStorageServiceProvider

' provider '  => [
     // Other service providers...
     Overtrue\LaravelFilesystem\Qiniu\QiniuStorageServiceProvider :: class,
 ],

然后将 config/filesystems.php 文件修改为:

<?php

return [
   'disks' => [
        //...
        'qiniu' => [
           'driver'     => 'qiniu',
           'access_key' => env('QINIU_ACCESS_KEY', 'xxxxxxxxxxxxxxxx'),
           'secret_key' => env('QINIU_SECRET_KEY', 'xxxxxxxxxxxxxxxx'),
           'bucket'     => env('QINIU_BUCKET', 'test'),
           'domain'     => env('QINIU_DOMAIN', 'xxx.clouddn.com'), // or host: https://xxxx.clouddn.com
        ],
        //...
    ]
];

我们要把七牛云的信息在 .env 文件中配置好

QINIU_ACCESS_KEY=xxxxxxxxxxxxxxxx
QINIU_SECRET_KEY=xxxxxxxxxxxxxxxx
QINIU_BUCKET=xxx
QINIU_DOMAIN=xxx

接下来我们就可以进行使用啦。由于我们不止一处地方用到上传图片,我们可以把上传图片写入到 自定义的辅助函数文件 中。

<?php

use Illuminate\Support\Facades\Storage;

/**
 * 上传图片到七牛云
 *
 * @param   $path   要保存的路径
 * @param   $file   上传的文件
 * @return  url     图片完全路径
 */
function upload_image($path, $file)
{
    if (!$path) return false;
    $disk = Storage::disk('qiniu');

    //将文件上传到七牛云,并且返回七牛云上相对路径
    $fileinfo = $disk->put($path, $file);

    //用相对路径来获取图片的完整路径
    return $disk->getUrl($fileinfo);;
}

接着就把图片地址保存到数据库中就行啦!

勤于编程,善于思考
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 1

写的不错 Mark走一波!

5年前 评论

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