这篇文章主要介绍了php使用oss web直传的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
创建OssUploadSignature.php
<?phpnamespace 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-d\TH:i:s\Z'); }}
运行
Postman测试
小心bug
bucketHost
可以在 oss
查看。
php是什么语言
php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。PHP 是一种 HTML 内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。
感谢你能够认真阅读完这篇文章,希望小编分享的“php使用oss web直传的方法”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!