概述
本篇文章给大家介绍一下php使用oss web直传。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
前言
直传优点: 无需经过服务器,由前端直传到 oss
,因此可以减少服务器带宽使用 和 加快用户上传速度。
本篇讲的这个不需要安装扩展包,仅有直传功能,是非常轻量的。
我是参考https://github.com/iiDestiny/flysystem-oss来写的,如果你需要在 php
使用其他的 oss
功能,那么扩展包更合适。
创建OssUploadSignature.php
<?php
namespace Service;class OssUploadSignature{
private $accessKeyId;
private $accessKeySecret;
private $expire = 300; // 5分钟有效期
private $bucketHost; // Bucket 域名
private $conditions = [ // 限制
[
'content-length-range', // 内容限制
0, // 最小上传
10 * 1024 * 1024 // 最大上传10m
], [
0 => 'starts-with',
1 => '$key', // 必须带key
2 => 'images/', // 如:/images 只能放在/images的路径
]
];
public function setBucketHost($bucketHost)
{
$this->bucketHost = $bucketHost;
return $this;
}
public function setAccessKeyId($accessKeyId)
{
$this->accessKeyId = $accessKeyId;
return $this;
}
public function setAccessKeySecret($accessKeySecret)
{
$this->accessKeySecret = $accessKeySecret;
return $this;
}
public function signatureConfig()
{
$end = time() + $this->expire;
$arr = [
'expiration' => $this->gmt_iso8601($end),
'conditions' => $this->conditions,
];
$base64Policy = base64_encode(
json_encode($arr)
);
$signature = base64_encode(hash_hmac('sha1', $base64Policy, $this->accessKeySecret, true));
return [
'OSSAccessKeyId' => $this->accessKeyId,
'policy' => $base64Policy,
'signature' => $signature,
'expire' => $end,
'bucketHost' => $this->bucketHost ];
}
// fix bug https://connect.console.aliyun.com/connect/detail/162632
public function gmt_iso8601($time)
{
return (new DateTime(null, new DateTimeZone('UTC')))->setTimestamp($time)->format('Y-m-dTH:i:sZ');
}}
登录后复制
运行
Postman测试
小心bug
bucketHost
可以在 oss
查看。
复制 policy
的时候 注意是否有换行符(我都没注意…)
推荐学习:《PHP视频教程》
以上就是php怎么使用oss web直传的详细内容,更多请关注靠谱客其它相关文章!
最后
以上就是乐观白猫为你收集整理的php怎么使用oss web直传的全部内容,希望文章能够帮你解决php怎么使用oss web直传所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复