Laravel6.x上传图片到七牛云

作者: 温新

分类: 【Laravel】

阅读: 2445

时间: 2021-02-10 09:12:49

Laravel6.x如何上传图片至七牛云?使用外部存储来存储图片等资源有这样几处优势:利于网站维护、缓解服务器压力。

在使用七牛云来存储之前,需要做如下准备工作:

注册七牛账号;

购买对象存储资源;

创建公共空间。我这里没有使用测试域名,而使用通过备案的域名进行绑定,也就是绑定真实域名。

准备工作完成之前下面开始使用代码工作。

第一步:下载安装包

composer require zgldh/qiniu-laravel-storage

我这里使用了一个第三方包,此包是在官方SDK基础上进行了封装,若需要快速开发,使用扩展包更为方便快速,这个过程中,几乎感受到不是上传到了七牛云。当然了,也可以直接使用官方SDK。

第二步:配置服务

文件配置:config/app.php文件中的providers数组中添加如下配置:

zgldh\QiniuStorage\QiniuFilesystemServiceProvider::class

第三步:配置驱动

文件位置:config/filesystems.php

    'disks' => [
       	/**
       	* 此处省略自带的配置
       	**/
        
        'qiniu' => [
            'driver'  => 'qiniu',
            'domains' => [
                'default'   => 'test.com', 		   //绑定的真实域名,当然了,我写出的是假的
                'https'     => 'test.com',         //你的HTTPS域名
                'custom'    => '可不填',                //Useless 没啥用,请直接使用上面的 default 项
             ],
            'access_key'=> '**********',  				//AccessKey
            'secret_key'=> '*********',  				//SecretKey
            'bucket'    => '对象存储空间名',  			   //Bucket名字
            'notify_url'=> '使用简单的图片上传,可不填',  //持久化处理回调地址
            'access'    => 'public',  //空间访问控制 public 或 private
            'hotlink_prevention_key' => '可不填', // CDN 时间戳防盗链的 key。 设置为 null 则不启用本功能。
        ],
    ],

关于如何操作,都有着详细的方法介绍,这是参考地址 https://packagist.org/packages/zgldh/qiniu-laravel-storage

第步四:路由与方法

路由

Route::post('uploader/qiniu','Admin\UploaderController@qiNiuUpload');

方法

   public function qiNiuUpload(Request $request)
    {
        if ($request->hasFile('file')) {
            $filename = sha1(time().$request->file('file')->getClientOriginalName()) . '.' . $request->file('file')->getClientOriginalExtension();
            Storage::disk('qiniu')->put($filename,file_get_contents($request->file('file')->path()));
            // 七牛文件路径
		   $filePath = Storage::disk('qiniu')->getDriver()->downloadUrl($filename);

            $result = [
                'code'   =>  200,
                'succMsg'   =>  '上传成功',
                'urlpath'   =>  $filePath
            ];

        return response()->json($result);
    }

2021-02-10

请登录后再评论