Comment utiliser la transmission directe oss web en php

藏色散人
Libérer: 2023-04-10 06:04:01
avant
4282 Les gens l'ont consulté

Cet article vous présentera comment utiliser la transmission directe oss web en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Avant-propos

Avantages directs : Pas besoin de passer par le serveur, du front-end vers

, cela peut donc réduire l'utilisation de la bande passante et de la vitesse du serveur augmenter la vitesse de téléchargement des utilisateurs. oss

Ce dont nous parlons dans cet article ne nécessite pas l'installation de packs d'extension. Il a uniquement une fonction de transmission directe et est très léger.

Je l'ai écrit en référence à https://github.com/iiDestiny/flysystem-oss Si vous devez utiliser d'autres fonctions

dans php, alors le package d'extension est plus approprié. oss

Créer 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');
    }}
Copier après la connexion

Exécuter

Comment utiliser la transmission directe oss web en php

Comment utiliser la transmission directe oss web en php

Test Postman

Comment utiliser la transmission directe oss web en php

Comment utiliser la transmission directe oss web en php

Attention aux bugs

peut être consulté sur bucketHost. oss

Comment utiliser la transmission directe oss web en php

Lors de la copie

, faites attention s'il y a des sauts de ligne (je n'ai même pas remarqué...)policy

Recommandé étude : "Tutoriel vidéo PHP》                                                   

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal