PHP 获取阿里云 Oss 的签名链接

2019-08-02 17:16:49 阅读:3 编辑
private function signOssUrl ($config, $object)
    {$accessKeyId = $config ["accessKeyId"];
        $accessKeySecret = $config ["accessKeySecret"];
        $endpoint = $config ["endpoint"];
        $bucket = $config ["bucket"];
        $expire = time () + $config ["expire"];

        $sign_str = "GET\n\n\n" . $expire . "\n/" . $bucket . "/" . $object;

        $sign = base64_encode (hash_hmac ("sha1", $sign_str, $accessKeySecret, true));
        if (!$config ["custom_domain"]) {$endpoint = $bucket . "." . $endpoint;}
        // $url = "http://" . $bucket . "." . $endpoint . "/" . urlencode ($object) . "?OSSAccessKeyId=" . $accessKeyId . "&Expires=" . $expire . "&Signature=" . urlencode ($Sign);
        $url = sprintf ("%s://%s/%s?OSSAccessKeyId=%s&Expires=%s&Signature=%s", $config ["ssl"] ? "https" : "http", $endpoint,
            urlencode ($object), $accessKeyId, $expire, urlencode ($sign));
        return $url;

    }
 $config = ["accessKeyId" => "LTAI22 dYBJ1 LO5 zc",
            "accessKeySecret" => "rehhmEDmWUIv6 B4 RDgWdD6 KlIUGoTJ",
            "endpoint" => "oss.xmyunce.com",
            "bucket" => "linsonoss",
            "expire" => 3600,
            "ssl" => false,
            "custom_domain" => true,
        ];
        $url = $this->signOssUrl ($config, $object);
        return \Redirect::to ($url);