Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie die OSS-Web-Direktübertragung in PHP

So verwenden Sie die OSS-Web-Direktübertragung in PHP

藏色散人
藏色散人nach vorne
2021-05-12 11:46:404261Durchsuche

In diesem Artikel erfahren Sie, wie Sie die OSS-Web-Direktübertragung in PHP verwenden. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Preface

Vorteile der Direktübertragung: Direktübertragung von vorne zu oss ohne den Server zu durchlaufen, damit die Nutzung der Serverbandbreite reduziert und die Geschwindigkeit des Benutzers beschleunigt wird. 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 = [ // 限制
        [
            &#39;content-length-range&#39;, // 内容限制
            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');
    }}

运行

So verwenden Sie die OSS-Web-Direktübertragung in PHP

So verwenden Sie die OSS-Web-Direktübertragung in PHP

Postman测试

So verwenden Sie die OSS-Web-Direktübertragung in PHP

So verwenden Sie die OSS-Web-Direktübertragung in PHP

小心bug

bucketHost 可以在 oss 查看。

So verwenden Sie die OSS-Web-Direktübertragung in PHP

复制 policy

Worum es in diesem Artikel geht, erfordert keine Installation von Erweiterungspaketen. Es verfügt nur über eine Direktübertragungsfunktion und ist sehr leicht.
Ich habe es mit Bezug auf https://github.com/iiDestiny/flysystem-oss geschrieben. Wenn Sie andere oss-Funktionen in php verwenden müssen, dann die Erweiterung Paket Besser geeignet. Create OssUploadSignature.phprrreee
🎜Run🎜🎜 17806. png" alt="So verwenden Sie die OSS-Web-Direktübertragung in PHP"/>🎜🎜So verwenden Sie die OSS-Web-Direktübertragung in PHP🎜🎜🎜🎜Postman-Test🎜🎜So verwenden Sie die OSS-Web-Direktübertragung in PHP🎜🎜🎜🎜🎜🎜Vorsicht vor Fehlern🎜 🎜bucketHost kann unter oss. 🎜🎜So verwenden Sie die OSS-Web-Direktübertragung in PHP 🎜🎜Kopieren Achten Sie darauf, ob es bei der Eingabe von policy Zeilenumbrüche gibt (habe ich nicht bemerkt...)🎜🎜🎜Empfohlenes Studium: „🎜PHP Video Tutorial🎜“ 🎜

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die OSS-Web-Direktübertragung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen