tencent cloud

文档反馈

生成预签名 URL

最后更新时间:2024-01-22 11:07:56

    简介

    PHP SDK 提供获取请求预签名 URL 接口,请求示例如下。
    说明
    建议用户使用临时密钥生成预签名,通过临时授权的方式进一步提高预签名上传、下载等请求的安全性。申请临时密钥时,请遵循 最小权限指引原则,防止泄漏目标存储桶或对象之外的资源。
    如果您一定要使用永久密钥来生成预签名,建议永久密钥的权限范围仅限于上传或下载操作,以规避风险。
    获取对象的 URL 并下载对象参数,可在获取的 URL 后拼接参数 response-content-disposition=attachment

    永久密钥预签名请求示例

    上传请求示例

    示例一:简单上传生成永久密钥预签名

    <?php
    
    require dirname(__FILE__) . '/../vendor/autoload.php';
    
    $secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.tencentcloud.com/cam/capi
    $secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.tencentcloud.com/cam/capi
    $region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.tencentcloud.com/cos5/bucket
    $cosClient = new Qcloud\\Cos\\Client(
    array(
    'region' => $region,
    'schema' => 'https', //协议头部,默认为http
    'signHost' => true, //默认签入Header Host;您也可以选择不签入Header Host,但可能导致请求失败或安全漏洞,若不签入host则填false
    'credentials'=> array(
    'secretId' => $secretId ,
    'secretKey' => $secretKey)));
    ### 简单上传预签名
    try {
    $signedUrl = $cosClient->getPreSignedUrl('putObject', array(
    'Bucket' => "examplebucket-1250000000", //存储桶,格式:BucketName-APPID
    'Key' => "exampleobject", //对象在存储桶中的位置,即对象键
    'Body' => 'string', //可为空或任意字符串
    'Params'=> array(), //http 请求参数,传入的请求参数需与实际请求相同,能够防止用户篡改此HTTP请求的参数,默认为空
    'Headers'=> array(), //http 请求头部,传入的请求头部需包含在实际请求中,能够防止用户篡改签入此处的HTTP请求头部,默认签入host
    ), '+10 minutes'); //签名的有效时间
    // 请求成功
    echo ($signedUrl);
    } catch (\\Exception $e) {
    // 请求失败
    echo($e);
    }
    
    

    示例二:分块上传生成永久密钥预签名

    <?php
    
    require dirname(__FILE__) . '/../vendor/autoload.php';
    
    $secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.tencentcloud.com/cam/capi
    $secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.tencentcloud.com/cam/capi
    $region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.tencentcloud.com/cos5/bucket
    $cosClient = new Qcloud\\Cos\\Client(
    array(
    'region' => $region,
    'schema' => 'https', //协议头部,默认为http
    'signHost' => true, //默认签入Header Host;您也可以选择不签入Header Host,但可能导致请求失败或安全漏洞,若不签入host则填false
    'credentials'=> array(
    'secretId' => $secretId ,
    'secretKey' => $secretKey)));
    
    ### 分块上传预签名
    try {
    $signedUrl = $cosClient->getPreSignedUrl('uploadPart', array(
    'Bucket' => "examplebucket-1250000000", //存储桶,格式:BucketName-APPID
    'Key' => "exampleobject", //对象在存储桶中的位置,即对象键
    'UploadId' => 'string', //上传ID
    'PartNumber' => '1', //块号
    'Body' => 'string',
    'Params'=> array(), //http 请求参数,传入的请求参数需与实际请求相同,能够防止用户篡改此HTTP请求的参数,默认为空
    'Headers'=> array(), //http 请求头部,传入的请求头部需包含在实际请求中,能够防止用户篡改签入此处的HTTP请求头部,默认已签入host
    ), '+10 minutes'); //签名的有效时间
    // 请求成功
    echo ($signedUrl);
    } catch (\\Exception $e) {
    // 请求失败
    echo($e);
    }

    下载请求示例

    示例一:简单下载生成永久密钥预签名

    <?php
    
    require dirname(__FILE__) . '/../vendor/autoload.php';
    
    $secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.tencentcloud.com/cam/capi
    $secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.tencentcloud.com/cam/capi
    $region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.tencentcloud.com/cos5/bucket
    $cosClient = new Qcloud\\Cos\\Client(
    array(
    'region' => $region,
    'schema' => 'https', //协议头部,默认为http
    'signHost' => true, //默认签入Header Host;您也可以选择不签入Header Host,但可能导致请求失败或安全漏洞,若不签入host则填false
    'credentials'=> array(
    'secretId' => $secretId ,
    'secretKey' => $secretKey)));
    
    ### 简单下载预签名
    try {
    $signedUrl = $cosClient->getPreSignedUrl('getObject', array(
    'Bucket' => "examplebucket-1250000000", //存储桶,格式:BucketName-APPID
    'Key' => "exampleobject", //对象在存储桶中的位置,即对象键
    'Params'=> array(), //http 请求参数,传入的请求参数需与实际请求相同,能够防止用户篡改此HTTP请求的参数,默认为空
    'Headers'=> array(), //http 请求头部,传入的请求头部需包含在实际请求中,能够防止用户篡改签入此处的HTTP请求头部,默认已签入host
    ), '+10 minutes'); //签名的有效时间
    // 请求成功
    echo ($signedUrl);
    } catch (\\Exception $e) {
    // 请求失败
    echo($e);
    }

    示例二:使用封装的 getObjectUrl 获取下载签名生成永久密钥预签名

    <?php
    
    require dirname(__FILE__) . '/../vendor/autoload.php';
    
    $secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.tencentcloud.com/cam/capi
    $secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.tencentcloud.com/cam/capi
    $region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.tencentcloud.com/cos5/bucket
    $cosClient = new Qcloud\\Cos\\Client(
    array(
    'region' => $region,
    'schema' => 'https', //协议头部,默认为http
    'signHost' => true, //默认签入Header Host;您也可以选择不签入Header Host,但可能导致请求失败或安全漏洞,若不签入host则填false
    'credentials'=> array(
    'secretId' => $secretId ,
    'secretKey' => $secretKey)));
    
    ### 使用封装的 getObjectUrl 获取下载签名
    try {
    $bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    $key = "exampleobject"; //对象在存储桶中的位置,即对象键
    $signedUrl = $cosClient->getObjectUrl($bucket, $key, '+10 minutes'); //签名的有效时间
    // 请求成功
    echo $signedUrl;
    } catch (\\Exception $e) {
    // 请求失败
    print_r($e);
    }

    临时密钥预签名请求示例

    上传请求示例

    示例一:简单上传生成临时密钥预签名

    <?php
    
    require dirname(__FILE__) . '/../vendor/autoload.php';
    
    $tmpSecretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.tencentcloud.com/cam/capi
    $tmpSecretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.tencentcloud.com/cam/capi
    $tmpToken = "COS_TOKEN"; //使用临时密钥需要填入,临时密钥生成和使用指引参见https://www.tencentcloud.com/document/product/436/14048?from_cn_redirect=1
    $region = "COS_REGION"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.tencentcloud.com/cos5/bucket
    $cosClient = new Qcloud\\Cos\\Client(
    array(
    'region' => $region,
    'schema' => 'https', //协议头部,默认为 http
    'signHost' => true, //默认签入Header Host;您也可以选择不签入Header Host,但可能导致请求失败或安全漏洞,若不签入host则填false
    'credentials'=> array(
    'secretId' => $tmpSecretId,
    'secretKey' => $tmpSecretKey,
    'token' => $tmpToken)));
    
    ### 简单上传预签名
    try {
    $signedUrl = $cosClient->getPreSignedUrl('putObject', array(
    'Bucket' => "examplebucket-1250000000", //存储桶,格式:BucketName-APPID
    'Key' => "exampleobject", //对象在存储桶中的位置,即对象键
    'Body' => 'string',
    'Params'=> array(), //http 请求参数,传入的请求参数需与实际请求相同,能够防止用户篡改此HTTP请求的参数,默认为空
    'Headers'=> array(), //http 请求头部,传入的请求头部需包含在实际请求中,能够防止用户篡改签入此处的HTTP请求头部,默认已签入host
    ), '+10 minutes'); //签名的有效时间
    // 请求成功
    echo ($signedUrl);
    } catch (\\Exception $e) {
    // 请求失败
    echo($e);
    }

    示例二:分块上传生成临时密钥预签名

    <?php
    
    require dirname(__FILE__) . '/../vendor/autoload.php';
    
    $tmpSecretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.tencentcloud.com/cam/capi
    $tmpSecretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.tencentcloud.com/cam/capi
    $tmpToken = "COS_TOKEN"; //使用临时密钥需要填入,临时密钥生成和使用指引参见https://www.tencentcloud.com/document/product/436/14048?from_cn_redirect=1
    $region = "COS_REGION"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.tencentcloud.com/cos5/bucket
    $cosClient = new Qcloud\\Cos\\Client(
    array(
    'region' => $region,
    'schema' => 'https', //协议头部,默认为 http
    'signHost' => true, //默认签入Header Host;您也可以选择不签入Header Host,但可能导致请求失败或安全漏洞,若不签入host则填false
    'credentials'=> array(
    'secretId' => $tmpSecretId,
    'secretKey' => $tmpSecretKey,
    'token' => $tmpToken)));
    
    ### 分块上传预签名
    try {
    $signedUrl = $cosClient->getPreSignedUrl('uploadPart', array(
    'Bucket' => "examplebucket-1250000000", //存储桶,格式:BucketName-APPID
    'Key' => "exampleobject", //对象在存储桶中的位置,即对象键
    'UploadId' => '', //上传ID
    'PartNumber' => '1', //块号
    'Body' => '',
    'Params'=> array(), //http 请求参数,传入的请求参数需与实际请求相同,能够防止用户篡改此HTTP请求的参数,默认为空
    'Headers'=> array(), //http 请求头部,传入的请求头部需包含在实际请求中,能够防止用户篡改签入此处的HTTP请求头部,默认已签入host
    ), '+10 minutes'); //签名的有效时间
    // 请求成功
    echo ($signedUrl);
    } catch (\\Exception $e) {
    // 请求失败
    echo($e);
    }

    下载请求示例

    示例一:简单下载生成临时密钥预签名

    <?php
    
    require dirname(__FILE__) . '/../vendor/autoload.php';
    
    $tmpSecretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.tencentcloud.com/cam/capi
    $tmpSecretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.tencentcloud.com/cam/capi
    $tmpToken = "COS_TOKEN"; //使用临时密钥需要填入,临时密钥生成和使用指引参见https://www.tencentcloud.com/document/product/436/14048?from_cn_redirect=1
    $region = "COS_REGION"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.tencentcloud.com/cos5/bucket
    $cosClient = new Qcloud\\Cos\\Client(
    array(
    'region' => $region,
    'schema' => 'https', //协议头部,默认为 http
    'signHost' => true, //默认签入Header Host;您也可以选择不签入Header Host,但可能导致请求失败或安全漏洞,若不签入host则填false
    'credentials'=> array(
    'secretId' => $tmpSecretId,
    'secretKey' => $tmpSecretKey,
    'token' => $tmpToken)));
    
    ### 简单下载预签名
    try {
    $signedUrl = $cosClient->getPreSignedUrl('getObject', array(
    'Bucket' => "examplebucket-1250000000", //存储桶,格式:BucketName-APPID
    'Key' => "exampleobject", //对象在存储桶中的位置,即对象键
    'Params'=> array(), //http 请求参数,传入的请求参数需与实际请求相同,能够防止用户篡改此HTTP请求的参数,默认为空
    'Headers'=> array(), //http 请求头部,传入的请求头部需包含在实际请求中,能够防止用户篡改签入此处的HTTP请求头部,默认已签入host
    ), '+10 minutes'); //签名的有效时间
    // 请求成功
    echo ($signedUrl);
    } catch (\\Exception $e) {
    // 请求失败
    echo($e);
    }

    示例二:使用封装的 getObjectUrl 获取下载签名生成临时密钥预签名

    <?php
    
    require dirname(__FILE__) . '/../vendor/autoload.php';
    
    $tmpSecretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.tencentcloud.com/cam/capi
    $tmpSecretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.tencentcloud.com/cam/capi
    $tmpToken = "COS_TOKEN"; //使用临时密钥需要填入,临时密钥生成和使用指引参见https://www.tencentcloud.com/document/product/436/14048?from_cn_redirect=1
    $region = "COS_REGION"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.tencentcloud.com/cos5/bucket
    $cosClient = new Qcloud\\Cos\\Client(
    array(
    'region' => $region,
    'schema' => 'https', //协议头部,默认为 http
    'credentials'=> array(
    'secretId' => $tmpSecretId,
    'secretKey' => $tmpSecretKey,
    'token' => $tmpToken)));
    
    ### 使用封装的 getObjectUrl 获取下载签名
    try {
    $bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    $key = "exampleobject"; //对象在存储桶中的位置,即对象键
    $signedUrl = $cosClient->getObjectUrl($bucket, $key, '+10 minutes'); //签名的有效时间
    // 请求成功
    echo $signedUrl;
    } catch (\\Exception $e) {
    // 请求失败
    print_r($e);
    }
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持