laravel

laravel6使用腾讯云对象存储上传文件

2020-06-16  本文已影响0人  这真的是一个帅气的名字

先安装扩展包

composer require freyo/flysystem-qcloud-cos-v5
successfully

修改配置config/app.php文件

'providers' => [
  // ...
  Freyo\Flysystem\QcloudCOSv5\ServiceProvider::class,
]
image.png

修改文件配置filesystems.php

 'cosv5' => [
            'driver' => 'cosv5',
            'region'          => env('COSV5_REGION', 'ap-beijing'),//后面是控制台储存桶里设置的所属地域
            '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'),
            'read_from_cdn'   => env('COSV5_READ_FROM_CDN', false),
        ],
image.png

配置.env文件信息

COSV5_APP_ID= ##APPid
COSV5_SECRET_ID=  ##APP_secret
COSV5_SECRET_KEY=  ## APP_KEY
COSV5_TIMEOUT=60
COSV5_CONNECT_TIMEOUT=60
COSV5_BUCKET= ##存储桶
COSV5_REGION=ap-beijing ##地区
COSV5_CDN= ##访问域名
COSV5_SCHEME=https
COSV5_READ_FROM_CDN=false
image.png image.png

使用

路由

        Route::get('/oss','AdminController@oss')->name("admin.oss");//测试
        Route::post('/uposs','AdminController@uposs')->name("admin.uposs");//测试

页面

<form action="/admin/uposs" method="post" enctype="multipart/form-data">
    @csrf
    <input type="file" name="files_url">
    <input type="submit" value="提交">
</form>

控制器

  public function oss(){
        return view('admin.oss');
    }
    public function uposs(Request $request)
    {
        $file = $request->file('files_url');
        $disk = Storage::disk('cosv5');
        $file_content = $disk -> put('video_class',$file);
        //第一个参数是你储存桶里想要放置文件的路径,第二个参数是文件对象
        $file_url = $disk->url($file_content);//获取到文件的线上地址
        var_dump($file_url);
    }

-----------以下是实际上传删除代码--------------
    /**
     * 上传cos
     * @param $file
     * @return mixed
     */
    public function addCos($file){
        try {
            $disk = Storage::disk('cosv5');
            $file_content = $disk -> put('video_class',$file);
            //第一个参数是你储存桶里想要放置文件的路径,第二个参数是文件对象
            $file_url = $disk->url($file_content);//获取到文件的线上地址
        } catch (\Exception $e) {
            //请求失败
            echo($e);
        }
        return $file_url;
    }

    public function delCos($url){
        preg_match("/https:\/\/(.+?)com\//", $url, $res);
        $file_urs = str_replace($res[0],"",$url);
        $arr = array();
        array_push($arr,$file_urs);
        try {
            $disk = Storage::disk('cosv5');
            $file_content = $disk->delete($arr);
        } catch (\Exception $e) {
            //请求失败
            echo($e);
        }
        return $file_content;
    }

测试结果

image.png

这里的video_class 和uposs方法,put的路径是一样的,相当于可以创建文件夹


image.png image.png
上一篇下一篇

猜你喜欢

热点阅读