이 글에서는 PHP에서 oss 웹 직접 전송을 사용하는 방법을 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.
직접 전송의 장점: 프런트 엔드에서 oss code> 서버를 거치지 않고 서버 대역폭 사용량을 줄이고 사용자 업로드 속도를 높일 수 있습니다. <code>oss
,因此可以减少服务器带宽使用 和 加快用户上传速度。
本篇讲的这个不需要安装扩展包,仅有直传功能,是非常轻量的。
我是参考https://github.com/iiDestiny/flysystem-oss来写的,如果你需要在 php
使用其他的 oss
功能,那么扩展包更合适。
<?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-d\TH:i:s\Z'); }}
bucketHost
可以在 oss
查看。
复制 policy
https://github.com/iiDestiny/flysystem-oss를 참고해서 작성했습니다.🎜Run🎜🎜 17806.png" alt="PHP에서 oss 웹 직접 전송을 사용하는 방법"/>🎜🎜🎜🎜🎜🎜우체부 테스트🎜🎜php
에서 다른oss
함수를 사용해야 한다면 확장 기능을 사용하세요. 패키지가 더 적합합니다. OssUploadSignature.phprrreee
bucketHost
는 oss
. 🎜🎜 🎜🎜복사 policy
시 줄 바꿈이 있는지 주의하세요(저는 눈치채지 못했습니다...)🎜🎜🎜추천 학습: "🎜PHP Video Tutorial🎜" 🎜위 내용은 PHP에서 oss 웹 직접 전송을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!