在 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);;
}

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

勤于编程,善于思考
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 1

写的不错 Mark走一波!

5年前 评论

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