2016-03-25 20 views
0

AWS iOS SDKを使用しており、チュートリアルの概要に従ってファイルのアップロード/ダウンロード操作を実行できました。今私は1つのバケットからファイルをコピーして別のバケットに貼り付けようとしています。私は両方のバケツを所有しており、それらにアクセスできます。私はまたそれをコピーした後、最初のバケツからファイルを削除したい(これはカット - ペースト操作です)しかし、私はコピー、貼り付け、元の削除を行う方法を前提としています。iOS SDKを使用して1つのバケットから別のバケットにAWS S3ファイルをコピーする方法

これを行うには、AWSS3 -uploadPartCopy:関数を使用する方法があるようです。この関数は、3つの関連する入力プロパティ、送り先バケット(バケット)、送り先キー(キー)、送り先位置(replicateSource)を持つAWSS3UploadPartCopyRquestオブジェクトを使用しているようですが、これはオブジェクトの場所のURLコピーする。

このような機能のために、私は本当に変わった形式のようですが、パートのアップロードとは何か、つまりマルチパートアップロードの一部でなければならないことにも慣れていませんか? uploadPartCopyを呼び出す前に複数パートアップロードを開始する必要がありますか?

私はこれがこれについて行く方法であるとも確信していません。それは、比較的簡単な作業に対する複雑すぎる解決策のようです。私は正しい道にここにいますか?

答えて

0

オブジェクトをコピーする操作は、PUT Object - CopyUpload Part - Copyです。オブジェクトが大きすぎない場合は、- replicateObject:にマップされた "PUT Object - Copy"を実装する方が簡単です。

また、Amazon S3にはCross-Region Replicationという機能があります。この機能は、2つのバケットが同じ領域にない場合、オブジェクトを自動的に複製します。

+0

私はここで何かを逃しているように感じます。あなたが提供したリンクは、これらの操作が他の言語でどのように機能するかを説明します。私はiOS SDKを使ってiOSアプリケーションからこの操作を実行しようとしています。 – sts54

0

ちょうど以下のコードを参照してください。あるバケットから別のバケットにデータをコピーする方法について詳しく説明しています。私の場合、私は同じバケツから複数の画像をコピーしたい。

NSString *sourceBucket = @"treedev1234"; 

NSString *destinationBucket = @"treedev1234"; 

AWSS3 *s3 = [AWSS3 defaultS3]; 
AWSS3ReplicateObjectRequest *replicateRequest = [AWSS3ReplicateObjectRequest new]; 

for(int i = 0;i<feedModel.imageCount;i++){ 
    replicateRequest.bucket = destinationBucket; 
    replicateRequest.key = [NSString stringWithFormat:@"posts/%d/%d.jpg",newpostid,i]; 
    replicateRequest.replicateSource = [NSString stringWithFormat:@"%@/posts/%d/%d.jpg",sourceBucket,oldpostid,i]; 
    replicateRequest.ACL = AWSS3ObjectCannedACLPublicReadWrite; 

    [[s3 replicateObject:replicateRequest] continueWithBlock:^id(AWSTask *task) { 
     if(task.error) 
     NSLog(@"The share request failed. error: [%@]", task.error); 
     return nil; 
    }]; 
関連する問題