zoukankan      html  css  js  c++  java
  • 腾讯云存储PHP上传实例【代码示例】

    最近遇到一个项目,考虑到会上传大量的手机照片,而手机的照片尺寸比较大,服务器增加存储盘来存照片,成本太大,最终考虑是用云存储,成本降了很多,服务器买的是腾讯的,所以使用的是腾讯的云存储。

    简单代码示例:

    第一步:首先下载腾讯云存储的SDK(cos-php-sdk-v5)

    配置具体的参数:(具体的参数配置参考腾讯云COS存储,新建存储桶,获取秘钥等)

    具体代码:

    // 初始化COS
    private function initCos(){
        require './cosphpsdkv5/index.php';
        $secretId = "AKIDay6aaaaaaaaaawsh2A2"; //"云 API 密钥 SecretId";
        $secretKey = "rUqzrLdddddddddddddddddvwkHZa"; //"云 API 密钥 SecretKey";
        $region = "ap-nanjing"; //设置一个默认的存储桶地域
        $cosClient = new QcloudCosClient(
            array(
                'region' => $region,
                'schema' => 'http', //协议头部,默认为http
                'credentials'=> array(
                    'secretId'  => $secretId ,
                    'secretKey' => $secretKey
                )
            )
        );
        return $cosClient;
    }

    上传代码示例:

    代码示例:

    public function cosupload(){
        set_time_limit(0);//防止上传大文件超时
        // 判断上传的文件类型
        $types = 'image'; // 图片类型
        if (!in_array($types,explode('/',$file['type']))) {
            return json_encode(['code' => 0, 'msg' => '类型错误,不支持的文件类型', 'off' => 0]);
        }
        // 图片目录
        $imgdirectory = "picture";
        $bucket = "picture-1255572032"; // 存储桶名称
        $filename = explode('.', $file['name']);
        $key = date('Ymd').'/'.md5(time().'http://' . $_SERVER['HTTP_HOST'].rand(0,9999)).'.'.end($filename);
        $cosClient = $this->initCos();
        try{
            $result = $cosClient->putObject(array(
                'Bucket' => $bucket,
                'Key' => $key,
                'Body' => fopen($file['tmp_name'], 'rb') 
            ));
            var_dump($result);
        }catch(Exception $e){
            echo "$e
    ";
        }
        // try{            
        //     // $result = $cosClient->putObject(array(
        //     //     'Bucket' => $bucket,
        //     //     'Key' => $key,
        //     //     'Body' => '说的不错呀~'
        //     // ));
        //     $result = 
        // }catch(Exception $e){
        //     echo "$e
    ";
        // }
    }

    遇到的问题,图片上传成功,但是直接访问,访问不了,原因是:存储桶的权限是私有读写,需要sign签名才能读取,但是可以修改权限,共有读私有写,或者共有读写就行。

  • 相关阅读:
    3.2.5 复制节点:
    1.创建元素节点:
    有多少漏洞都会重来:从ElasticSearch到MongoDB和Redis
    登陆密码显示与不显示的切换
    计算机网络基础 — Linux 路由器
    作为白手起家的企业家,必经阶段你经历了几个?
    竞争越来越大,创业公司怎么才能走的越来越远?
    城市竞争太大?这有农村创业七大项目,让你远离竞争
    短视频的改革带来的风暴,网红又该何去何从?
    照着官方文档学习react
  • 原文地址:https://www.cnblogs.com/e0yu/p/13937081.html
Copyright © 2011-2022 走看看