public static function getHttpUploadPostParams($bucket, $uriPrefix = '', $acl = self::ACL_PRIVATE, $lifetime = 3600, $maxFileSize = 5242880, $successRedirect = "201", $amzHeaders = array(), $headers = array(), $flashVars = false)
{
// Create policy object
$policy = new stdClass();
$policy->expiration = gmdate('Y-m-d\\TH:i:s\\Z', self::__getTime() + $lifetime);
$policy->conditions = array();
$obj = new stdClass();
$obj->bucket = $bucket;
array_push($policy->conditions, $obj);
$obj = new stdClass();
$obj->acl = $acl;
array_push($policy->conditions, $obj);
$obj = new stdClass();
// 200 for non-redirect uploads
if (is_numeric($successRedirect) && in_array((int) $successRedirect, array(200, 201))) {
$obj->success_action_status = (string) $successRedirect;
} else {
// URL
$obj->success_action_redirect = $successRedirect;
}
array_push($policy->conditions, $obj);
if ($acl !== self::ACL_PUBLIC_READ) {
array_push($policy->conditions, array('eq', '$acl', $acl));
}
array_push($policy->conditions, array('starts-with', '$key', $uriPrefix));
if ($flashVars) {
array_push($policy->conditions, array('starts-with', '$Filename', ''));
}
foreach (array_keys($headers) as $headerKey) {
array_push($policy->conditions, array('starts-with', '$' . $headerKey, ''));
}
foreach ($amzHeaders as $headerKey => $headerVal) {
$obj = new stdClass();
$obj->{$headerKey} = (string) $headerVal;
array_push($policy->conditions, $obj);
}
array_push($policy->conditions, array('content-length-range', 0, $maxFileSize));
$policy = base64_encode(str_replace('\\/', '/', json_encode($policy)));
// Create parameters
$params = new stdClass();
$params->AWSAccessKeyId = self::$__accessKey;
$params->key = $uriPrefix . '${filename}';
$params->acl = $acl;
$params->policy = $policy;
unset($policy);
$params->signature = self::__getHash($params->policy);
if (is_numeric($successRedirect) && in_array((int) $successRedirect, array(200, 201))) {
$params->success_action_status = (string) $successRedirect;
} else {
$params->success_action_redirect = $successRedirect;
}
foreach ($headers as $headerKey => $headerVal) {
$params->{$headerKey} = (string) $headerVal;
}
foreach ($amzHeaders as $headerKey => $headerVal) {
$params->{$headerKey} = (string) $headerVal;
}
return $params;
}