setAmzHeader() public method

Set x-amz-meta-* header
public setAmzHeader ( string $key, string $value ) : void
$key string Key
$value string Value
return void
Example #1
0
 /**
  * Copy an object
  *
  * @param string $srcBucket Source bucket name
  * @param string $srcUri Source object URI
  * @param string $bucket Destination bucket name
  * @param string $uri Destination object URI
  * @param constant $acl ACL constant
  * @param array $metaHeaders Optional array of x-amz-meta-* headers
  * @param array $requestHeaders Optional array of request headers (content type, disposition, etc.)
  * @param constant $storageClass Storage class constant
  * @return mixed | false
  */
 public static function copyObject($srcBucket, $srcUri, $bucket, $uri, $acl = self::ACL_PRIVATE, $metaHeaders = array(), $requestHeaders = array(), $storageClass = self::STORAGE_CLASS_STANDARD)
 {
     $rest = new S3Request('PUT', $bucket, $uri, self::$endpoint);
     $rest->setHeader('Content-Length', 0);
     foreach ($requestHeaders as $h => $v) {
         strpos($h, 'x-amz-') === 0 ? $rest->setAmzHeader($h, $v) : $rest->setHeader($h, $v);
     }
     foreach ($metaHeaders as $h => $v) {
         $rest->setAmzHeader('x-amz-meta-' . $h, $v);
     }
     if ($storageClass !== self::STORAGE_CLASS_STANDARD) {
         // Storage class
         $rest->setAmzHeader('x-amz-storage-class', $storageClass);
     }
     $rest->setAmzHeader('x-amz-acl', $acl);
     $rest->setAmzHeader('x-amz-copy-source', sprintf('/%s/%s', $srcBucket, rawurlencode($srcUri)));
     if (sizeof($requestHeaders) > 0 || sizeof($metaHeaders) > 0) {
         $rest->setAmzHeader('x-amz-metadata-directive', 'REPLACE');
     }
     $rest = $rest->getResponse();
     if ($rest->error === false && $rest->code !== 200) {
         $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status');
     }
     if ($rest->error !== false) {
         self::__triggerError(sprintf("S3::copyObject({$srcBucket}, {$srcUri}, {$bucket}, {$uri}): [%s] %s", $rest->error['code'], $rest->error['message']), __FILE__, __LINE__);
         return false;
     }
     return isset($rest->body->LastModified, $rest->body->ETag) ? array('time' => strtotime((string) $rest->body->LastModified), 'hash' => substr((string) $rest->body->ETag, 1, -1)) : false;
 }
Example #2
0
 /**
  * Copy an object
  *
  * @param string $bucket Source bucket name
  * @param string $uri Source object URI
  * @param string $bucket Destination bucket name
  * @param string $uri Destination object URI
  * @param constant $acl ACL constant
  * @param array $metaHeaders Optional array of x-amz-meta-* headers
  * @param array $requestHeaders Optional array of request headers (content type, disposition, etc.)
  * @return mixed | false
  */
 public static function copyObject($srcBucket, $srcUri, $bucket, $uri, $acl = self::ACL_PRIVATE, $metaHeaders = array(), $requestHeaders = array())
 {
     $rest = new S3Request('PUT', $bucket, $uri);
     $rest->setHeader('Content-Length', 0);
     foreach ($requestHeaders as $h => $v) {
         $rest->setHeader($h, $v);
     }
     foreach ($metaHeaders as $h => $v) {
         $rest->setAmzHeader('x-amz-meta-' . $h, $v);
     }
     $rest->setAmzHeader('x-amz-acl', $acl);
     $rest->setAmzHeader('x-amz-copy-source', sprintf('/%s/%s', $srcBucket, $srcUri));
     if (sizeof($requestHeaders) > 0 || sizeof($metaHeaders) > 0) {
         $rest->setAmzHeader('x-amz-metadata-directive', 'REPLACE');
     }
     $rest = $rest->getResponse();
     if ($rest->error === false && $rest->code !== 200) {
         $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status');
     }
     if ($rest->error !== false) {
         trigger_error(sprintf("S3::copyObject({$srcBucket}, {$srcUri}, {$bucket}, {$uri}): [%s] %s", $rest->error['code'], $rest->error['message']), E_USER_WARNING);
         return false;
     }
     return isset($rest->body->LastModified, $rest->body->ETag) ? array('time' => strtotime((string) $rest->body->LastModified), 'hash' => substr((string) $rest->body->ETag, 1, -1)) : false;
 }
Example #3
0
 public static function copyObject($srcBucket, $srcUri, $bucket, $uri, $acl = self::ACL_PUBLIC_READ, $metaHeaders = array(), $requestHeaders = array())
 {
     $rest = new S3Request('PUT', $bucket, $uri);
     $rest->setHeader('Content-Length', 0);
     foreach ($requestHeaders as $h => $v) {
         $rest->setHeader($h, $v);
     }
     foreach ($metaHeaders as $h => $v) {
         $rest->setAmzHeader('x-amz-meta-' . $h, $v);
     }
     $rest->setAmzHeader('x-amz-acl', $acl)->setAmzHeader('x-amz-copy-source', sprintf('/%s/%s', $srcBucket, $srcUri));
     if (sizeof($requestHeaders) > 0 || sizeof($metaHeaders) > 0) {
         $rest->setAmzHeader('x-amz-metadata-directive', 'REPLACE');
     }
     $rest = $rest->getResponse();
     if ($rest->error !== false || $rest->code !== 200) {
         throw new Exception(sprintf("S3::copyObject(%s, %s, %s, %s): [%s] %s", $srcBucket, $srcUri, $bucket, $uri, $rest->code, 'Unexpected HTTP status'));
     }
     return isset($rest->body->LastModified, $rest->body->ETag) ? array('time' => date('Y-m-d H:i:s', strtotime((string) $rest->body->LastModified)), 'hash' => substr((string) $rest->body->ETag, 1, -1)) : false;
 }
Example #4
0
 /**
  * Copy an object
  *
  * @param string $bucket Source bucket name
  * @param string $uri Source object URI
  * @param string $bucket Destination bucket name
  * @param string $uri Destination object URI
  * @param constant $acl ACL constant
  * @return mixed | false
  */
 public static function copyObject($srcBucket, $srcUri, $bucket, $uri, $acl = self::ACL_PRIVATE)
 {
     $rest = new S3Request('PUT', $bucket, $uri);
     $rest->setAmzHeader('x-amz-acl', $acl);
     $rest->setAmzHeader('x-amz-copy-source', sprintf('/%s/%s', $srcBucket, $srcUri));
     $rest = $rest->getResponse();
     if ($rest->error === false && $rest->code !== 200) {
         $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status');
     }
     if ($rest->error !== false) {
         trigger_error(sprintf("S3::copyObject({$srcBucket}, {$srcUri}, {$bucket}, {$uri}): [%s] %s", $rest->error['code'], $rest->error['message']), E_USER_WARNING);
         return false;
     }
     return isset($rest->body->LastModified, $rest->body->ETag) ? array('time' => strtotime((string) $rest->body->LastModified), 'hash' => substr((string) $rest->body->ETag, 1, -1)) : false;
 }
 /**
  * Put an object
  *
  * @param mixed $input Input data
  * @param string $bucket Bucket name
  * @param string $uri Object URI
  * @param constant $acl ACL constant
  * @param array $metaHeaders Array of x-amz-meta-* headers
  * @param array $requestHeaders Array of request headers or content type as a string
  * @return boolean
  */
 public static function putObject($input, $bucket, $uri, $acl = self::ACL_PRIVATE, $metaHeaders = array(), $requestHeaders = array())
 {
     if ($input === false) {
         return false;
     }
     $rest = new S3Request('PUT', $bucket, $uri, self::$__api_host);
     if (is_string($input)) {
         $input = array('data' => $input, 'size' => strlen($input), 'md5sum' => base64_encode(md5($input, true)));
     }
     // Data
     if (isset($input['fp'])) {
         $rest->fp =& $input['fp'];
     } elseif (isset($input['file'])) {
         $rest->fp = @fopen($input['file'], 'rb');
     } elseif (isset($input['data'])) {
         $rest->data = $input['data'];
     }
     // Content-Length (required)
     if (isset($input['size']) && $input['size'] >= 0) {
         $rest->size = $input['size'];
     } else {
         if (isset($input['file'])) {
             $rest->size = filesize($input['file']);
         } elseif (isset($input['data'])) {
             $rest->size = strlen($input['data']);
         }
     }
     // Custom request headers (Content-Type, Content-Disposition, Content-Encoding)
     if (is_array($requestHeaders)) {
         foreach ($requestHeaders as $h => $v) {
             $rest->setHeader($h, $v);
         }
     } elseif (is_string($requestHeaders)) {
         // Support for legacy contentType parameter
         $input['type'] = $requestHeaders;
     }
     // Content-Type
     if (!isset($input['type'])) {
         if (isset($requestHeaders['Content-Type'])) {
             $input['type'] =& $requestHeaders['Content-Type'];
         } elseif (isset($input['file'])) {
             $input['type'] = self::__getMimeType($input['file']);
         } else {
             $input['type'] = 'application/octet-stream';
         }
     }
     // We need to post with Content-Length and Content-Type, MD5 is optional
     if ($rest->size >= 0 && ($rest->fp !== false || $rest->data !== false)) {
         $rest->setHeader('Content-Type', $input['type']);
         if (isset($input['md5sum'])) {
             $rest->setHeader('Content-MD5', $input['md5sum']);
         }
         $rest->setAmzHeader('x-amz-acl', $acl);
         foreach ($metaHeaders as $h => $v) {
             $rest->setAmzHeader('x-amz-meta-' . $h, $v);
         }
         $rest->getResponse();
     } else {
         $rest->response->error = array('code' => 0, 'message' => 'Missing input parameters');
     }
     if ($rest->response->error === false && $rest->response->code !== 200) {
         $rest->response->error = array('code' => $rest->response->code, 'message' => 'Unexpected HTTP status');
     }
     if ($rest->response->error !== false) {
         trigger_error(sprintf("S3::putObject(): [%s] %s", $rest->response->error['code'], $rest->response->error['message']), E_USER_WARNING);
         return false;
     }
     return true;
 }
Example #6
0
	/**
	* Copy an object
	*
	* @param string $bucket Source bucket name
	* @param string $uri Source object URI
	* @param string $bucket Destination bucket name
	* @param string $uri Destination object URI
	* @param constant $acl ACL constant
	* @return mixed | false
	*/
	public function copy($srcBucket, $srcUri, $bucket, $uri, $acl = StorageManager::ACL_PRIVATE) 
	{
		$rest = new S3Request($this->id,$this->secret,$this->useSSL,'PUT', $bucket, $uri);
		$rest->setAmzHeader('x-amz-acl', $acl);
		$rest->setAmzHeader('x-amz-copy-source', sprintf('/%s/%s', $srcBucket, $srcUri));
		$rest = $rest->getResponse();
	
		if ($rest->error === false && $rest->code !== 200)
			$rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status');
	
		if ($rest->error !== false) 
			throw new AWSException(sprintf("S3::copyObject({$srcBucket}, {$srcUri}, {$bucket}, {$uri}): [%s] %s", $rest->error['code'], $rest->error['message']));
		
		return isset($rest->body->LastModified, $rest->body->ETag) ? array(
			'time' => strtotime((string)$rest->body->LastModified),
			'hash' => substr((string)$rest->body->ETag, 1, -1)
		) : false;
	}
Example #7
0
 /**
  * Copy an object
  *
  * @param string $bucket Source bucket name
  * @param string $uri Source object URI
  * @param string $bucket Destination bucket name
  * @param string $uri Destination object URI
  * @return mixed | false
  */
 public static function copyObject($srcBucket, $srcUri, $bucket, $uri)
 {
     $rest = new S3Request('PUT', $bucket, $uri);
     $rest->setAmzHeader('x-amz-copy-source', sprintf('/%s/%s', $srcBucket, $srcUri));
     $rest = $rest->getResponse();
     if ($rest->error === false && $rest->code !== 200) {
         $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status');
     }
     if ($rest->error !== false) {
         throw new S3Exception($rest->error['code'], "Could not copy object from {$srcBucket}/{$srcUri} to {$bucket}/{$uri}: " . $rest->error['message']);
         return false;
     }
     return isset($rest->body->LastModified, $rest->body->ETag) ? array('time' => strtotime((string) $rest->body->LastModified), 'hash' => substr((string) $rest->body->ETag, 1, -1)) : false;
 }
Example #8
0
	/**
	* Put an object
	*
	* @param mixed $input Input data
	* @param string $bucket Bucket name
	* @param string $uri Object URI
	* @param constant $acl ACL constant
	* @param array $metaHeaders Array of x-amz-meta-* headers
	* @param string $contentType Content type
	* @return boolean
	*/
	public static function putObject($input, $bucket, $uri, $acl = self::ACL_PRIVATE, $metaHeaders = array(), $contentType = null) {
		if ($input == false) return false;
		$rest = new S3Request('PUT', $bucket, $uri);

		if (is_string($input)) $input = array(
			'data' => $input, 'size' => strlen($input),
			'md5sum' => base64_encode(md5($input, true))
		);

		// Data
		if (isset($input['fp']))
			$rest->fp =& $input['fp'];
		elseif (isset($input['file']))
			$rest->fp = @fopen($input['file'], 'rb');
		elseif (isset($input['data']))
			$rest->data = $input['data'];

		// Content-Length (required)
		if (isset($input['size']) && $input['size'] > 0)
			$rest->size = $input['size'];
		else {
			if (isset($input['file']))
				$rest->size = filesize($input['file']);
			elseif (isset($input['data']))
				$rest->size = strlen($input['data']);
		}

		// Content-Type
		if ($contentType !== null)
			$input['type'] = $contentType;
		elseif (!isset($input['type']) && isset($input['file']))
			$input['type'] = self::__getMimeType($input['file']);
		else
			$input['type'] = 'application/octet-stream';

		// We need to post with the content-length and content-type, MD5 is optional
		if ($rest->size > 0 && ($rest->fp !== false || $rest->data !== false)) {
			$rest->setHeader('Content-Type', $input['type']);
			if (isset($input['md5sum'])) $rest->setHeader('Content-MD5', $input['md5sum']);

			$rest->setAmzHeader('x-amz-acl', $acl);
			foreach ($metaHeaders as $h => $v) $rest->setAmzHeader('x-amz-meta-'.$h, $v);
			$rest->getResponse();
		} else
			$rest->response->error = array('code' => 0, 'message' => 'Missing input parameters');

		if ($rest->response->error === false && $rest->response->code !== 200)
			$rest->response->error = array('code' => $rest->response->code, 'message' => 'Unexpected HTTP status');
		if ($rest->response->error !== false) {
			trigger_error(sprintf("S3::putObject(): [%s] %s", $rest->response->error['code'], $rest->response->error['message']), E_USER_WARNING);
			return false;
		}
		return true;
	}