2012-03-15 21 views
1

zendフレームワークは、低レベルのREST機能を簡素化するamazon 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フレームワークにS3でRedundancy Redundancy Storage(RRS)としてオブジェクトを保存するよう指定する機能はありますか?

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

おかげさまでジェイミー、そのトリックをやった、16時間後に恩恵を受ける – user784637

2

Zend_Services_S3::putFile and putObjectに第3引数を渡すことができます。これは$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のすべてのオブジェクトには、ストレージクラス設定があります。デフォルトの の設定は標準です。 PUTリクエスト にオプションのヘッダーを使用して、設定REDUCED_REDUNDANCYを指定することができます。

正確に何を渡すべきかを見つけるためにAPIを少し掘り下げなければならないかもしれませんが、これは正しい方向を指すはずです。

+0

ロッキーのおかげでありがとう、しかし私はrrsとしてファイルを保存する方法を見つけることができませんでした。 – user784637

関連する問題