2012-03-15 4 views
1

젠드 프레임 워크는 저수준 REST 기능을 단순화하는 아마존 S3 API 용 PHP 래퍼를 제공합니다.Zend framework amazon S3 - 파일을 중복 된 중복으로 저장하는 방법?

http://framework.zend.com/manual/en/zend.service.amazon.s3.html

S3에 파일을 저장하기 위해 예를 들어 당신이 할 필요가 기본적으로

$s3->putFile("me.png", "my-own-bucket/Pictures/Me.png", 
    array(Zend_Service_Amazon_S3::S3_ACL_HEADER => 
      Zend_Service_Amazon_S3::S3_ACL_PUBLIC_READ)); 

, 객체는 일반 스토리지와 같은 버킷에 저장되어 있습니다. Zend Framework에 S3에서 Redundancy Redundancy Storage (RU)로 개체를 저장하도록 지정할 수있는 기능이 있습니까?

그렇지 않은 경우 RRS로 버킷의 모든 개체의 기본 저장소를 설정할 수있는 방법이 있습니까?

답변

5

http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectPOST.html

는 다음과 같은 후 RockyFords 조언을 시도 해 봤나? 아래 코드는 올바른 모드로 업로드해야합니다.

$s3->putFile("me.png", "my-own-bucket/Pictures/Me.png", 
    array(
     Zend_Service_Amazon_S3::S3_ACL_HEADER => Zend_Service_Amazon_S3::S3_ACL_PUBLIC_READ, 
     'x-amz-storage-class' => 'REDUCED_REDUNDANCY' 
    ) 
); 
+0

감사합니다. Jamie, 그 트릭을했습니다. 현상금은 16 시간 만에옵니다. – user784637

2

Zend_Services_S3::putFile and putObject에 세 번째 인수 인 $meta을 전달할 수 있으며 스칼라 또는 배열을 허용하는 것처럼 보입니다.

public function putFile($path, $object, $meta=null) 
    { 
     $data = @file_get_contents($path); 
     if ($data === false) { 
      /** 
      * @see Zend_Service_Amazon_S3_Exception 
      */ 
      require_once 'Zend/Service/Amazon/S3/Exception.php'; 
      throw new Zend_Service_Amazon_S3_Exception("Cannot read file $path"); 
     } 

     if (!is_array($meta)) { 
      $meta = array(); 
     } 

     if (!isset($meta[self::S3_CONTENT_TYPE_HEADER])) { 
      $meta[self::S3_CONTENT_TYPE_HEADER] = self::getMimeType($path); 
     } 

     return $this->putObject($object, $data, $meta); 
    } 

와 S3는 RRS와 같은 객체 나 파일을 설정하는 헤더 변화를 원한다 :

Q : 어떻게 내가 RRS를 사용하여 내 데이터를 저장하도록 지정합니까를?

Amazon S3의 모든 개체에는 저장소 클래스 설정이 있습니다. 기본값 은 STANDARD입니다. PUT 요청 에 선택적 헤더를 사용하여 REDUCED_REDUNDANCY 설정을 지정할 수 있습니다.

정확히 전달할 항목을 찾으려면 API를 약간 알아야 할 수 있지만 올바른 방향으로 가리켜 야합니다.

+0

리드 록키에게 감사드립니다.하지만 파일을 rrs로 저장하는 방법을 찾지 못했습니다. – user784637

관련 문제