BaiduBCS::set_object_acl PHP Method

set_object_acl() public method

设置object的acl,有三种模式, (1).设置详细json格式的acl; a. $acl 为json的array b. $acl 为json的string (2).通过acl_type字段进行设置 a. $acl 为BaiduBCS::$ACL_ACTIONS中的字段
public set_object_acl ( string $bucket, string $object, string | array $acl, array $opt = [] ) : BCS_ResponseCore
$bucket string (Required)
$object string (Required)
$acl string | array (Required)
$opt array (Optional)
return BCS_ResponseCore
    public function set_object_acl($bucket, $object, $acl, $opt = array())
    {
        $this->assertParameterArray($opt);
        //analyze acl
        $result = $this->analyze_user_acl($acl);
        $opt = array_merge($opt, $result);
        $opt[self::BUCKET] = $bucket;
        $opt[self::METHOD] = 'PUT';
        $opt[self::OBJECT] = $object;
        $opt[self::QUERY_STRING] = array(self::ACL => 1);
        $response = $this->authenticate($opt);
        $this->log($response->isOK() ? "Set object acl success!" : "Set object acl failed! Response: [" . $response->body . "]", $opt);
        return $response;
    }

Usage Example

function mv_attachments_to_bcs($data)
{
    require_once 'bcs.class.php';
    $bcs_options = get_option('bcs_options', TRUE);
    $bcs_bucket = attribute_escape($bcs_options['bucket']);
    if (false === getenv('HTTP_BAE_ENV_AK')) {
        $bcs_ak = attribute_escape($bcs_options['ak']);
    }
    if (false === getenv('HTTP_BAE_ENV_SK')) {
        $bcs_sk = attribute_escape($bcs_options['sk']);
    }
    $is_Enabled_asl = attribute_escape($bcs_options['is_Enabled_asl']);
    $baidu_bcs = new BaiduBCS($bcs_ak, $bcs_sk);
    $bucket = $bcs_bucket;
    $year = date("Y");
    $month = date("m");
    $object = "/blog/" . $year . $month . "/" . basename($data['file']);
    $file = $data['file'];
    $opt = array("acl" => "public-read");
    $baidu_bcs->create_object($bucket, $object, $file, $opt);
    if ($is_Enabled_asl) {
        $referer = attribute_escape($bcs_options['referer']);
        $referer2 = attribute_escape($bcs_options['referer2']);
        if (!empty($referer)) {
            if (!empty($referer2)) {
                $referer = array($referer, $referer2);
            } else {
                $referer = array($referer);
            }
        } else {
            $referer = preg_replace('#^www\\.#', '', strtolower($_SERVER['SERVER_NAME']));
            $referer = '*.' . preg_replace('#^blog\\.#', '', $referer) . '/*';
            $referer = array($referer);
        }
        $acl = array('statements' => array('0' => array('user' => array("*"), 'resource' => array($bucket . $object), 'action' => array(BaiduBCS::BCS_SDK_ACL_ACTION_GET_OBJECT), 'effect' => BaiduBCS::BCS_SDK_ACL_EFFECT_ALLOW, 'referer' => $referer)));
        $baidu_bcs->set_object_acl($bucket, $object, $acl);
    }
    $url = "http://bcs.duapp.com/{$bucket}{$object}";
    return array('file' => $url, 'url' => $url, 'type' => $data['type']);
}
All Usage Examples Of BaiduBCS::set_object_acl