阿里云OSS

本服务用于管理阿里云OSS

本服务是对阿里云SDK的封装,所以方法名与阿里的SDK一样,下面是列举出的几个使用方法,其他OSS方法都是可以使用的,请参考阿里云 OSS参考文档

PHP上传

配置

配置查看
endPoint登录某个块查看 bucket概览
accessId登录阿里云后台查看右上角的 "访问控制(使用子帐号)" 或 "accesskeys(使用主帐号)"
accessKey同上 accessId
Config::set('oss',[
    'accessKeyId'=>'',
    'accessKeySecret'=>'',
    //外网Endpoint OSS开通Region和Endpoint对照表: https://help.aliyun.com/document_detail/31837.html
    'endpoint'=>'oss-cn-hangzhou.aliyuncs.com',
    //OSS块标识
    'bucket'=> "houdunren"
    ]
);

字符串上传

$object = "hd.txt";
$content = "Hi, OSS.";
$res = Oss::putObject($object, $content);
if(isset($res['oss-request-url'])){
    echo "文件:".$res['oss-request-url'];
}

上传本地文件

$object   = '1-test-upload.jpg';
$filePath = 'tests/1.jpg';
$res      = Oss::uploadFile($object, $filePath);
if(isset($res['oss-request-url'])){
    echo "文件:".$res['oss-request-url'];
}

其他OSS管理

组件与官网SDK无缝集成,比如我们拿删除资源举例。
下面是官方删除对象代码 官网查看

$ossClient->deleteObject($bucket, $object);

本组件实现的删除方法

Oss::deleteObject('hdphp.php');

也就是说我们在组件中调用SDK提供的方法时,不需要传递第一个块名称。

前台直接上传

后台签名

format(\DateTime::ISO8601);
            $pos        = strpos($expiration, '+');
            $expiration = substr($expiration, 0, $pos);
            return $expiration."Z";
        }

        $now        = time();
        $expire     = 30; //设置该policy超时时间是10s. 即这个policy过了这个有效时间,将不能访问
        $end        = $now + $expire;
        $expiration = gmt_iso8601($end);

        //最大文件大小.用户可以自己设置
        $condition    = [0 => 'content-length-range', 1 => 0, 2 => 1048576000];
        $conditions[] = $condition;

        //表示用户上传的数据,必须是以$dir开始, 不然上传会失败,这一步不是必须项,只是为了安全起见,防止用户通过policy上传到别人的目录
        $start        = [0 => 'starts-with', 1 => '$key', 2 => $dir];
        $conditions[] = $start;

        $arr = ['expiration' => $expiration, 'conditions' => $conditions];
        //return;
        $policy         = json_encode($arr);
        $base64_policy  = base64_encode($policy);
        $string_to_sign = $base64_policy;
        $signature      = base64_encode(hash_hmac('sha1', $string_to_sign, $key, true));

        $response              = [];
        $response['accessid']  = $id;
        $response['host']      = $host;
        $response['policy']    = $base64_policy;
        $response['signature'] = $signature;
        $response['expire']    = $end;
        //这个参数是设置用户上传指定的前缀
        $response['dir'] = $dir;
        return json_encode($response);
    }
}
echo Oss::sign();

前台




    
    OSS上传