Object Storage Service (OSS) のAppendObject操作を呼び出して、追加可能なオブジェクトにコンテンツを追加できます。
AppendObject操作を呼び出してアップロードされたオブジェクトは追加可能なオブジェクトです。 PutObject操作を呼び出してアップロードされたオブジェクトは通常のオブジェクトです。
使用上の注意
このトピックのサンプルコードを実行する前に、カスタムドメイン名やSecurity Token Service (STS) などの方法を使用してOSSClientインスタンスを作成する必要があります。 詳細については、「初期化」をご参照ください。
説明OSSClientインスタンスを初期化するときに、バケットのリージョンにマップされるエンドポイントを指定します。
このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。
追加アップロードを使用するには、
oss:GetObject
およびoss:PutObject
権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。コンテンツを追加するオブジェクトが存在しない場合、AppendObject操作によって追加可能なオブジェクトが作成されます。
コンテンツを追加するオブジェクトが存在する場合:
オブジェクトが追加可能オブジェクトであり、追加操作の開始位置が現在のオブジェクトサイズに等しい場合、オブジェクトはオブジェクトの最後に追加されます。
オブジェクトが追加可能オブジェクトであり、追加操作の開始位置が現在のオブジェクトサイズと等しくない場合、PositionNotEqualToLengthエラーが返されます。
オブジェクトが追加可能なオブジェクトでない場合、ObjectNotAppendableエラーがスローされます。
CopyObject操作は、追加可能なオブジェクトでは実行できません。
例
次のサンプルコードは、追加アップロードの実行方法の例を示しています。
OSSAppendObjectRequest * append = [OSSAppendObjectRequest new];
// Configure the required fields. bucketName indicates the name of the bucket. objectKey is equivalent to objectName that indicates the full path of the object you want to upload to OSS by using append upload. The path must include the extension of the object. For example, you can set objectKey to abc/efg/123.jpg.
append.bucketName = @"<bucketName>";
append.objectKey = @"<objectKey>";
// Specify the position from which the first append operation starts.
append.appendPosition = 0;
NSString * docDir = [self getDocumentDirectory];
append.uploadingFileURL = [NSURL fileURLWithPath:@"<filepath>"];
// Configure the optional fields.
append.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
};
// append.contentType = @"";
// append.contentMd5 = @"";
// append.contentEncoding = @"";
// append.contentDisposition = @"";
OSSTask * appendTask = [client appendObject:append];
[appendTask continueWithBlock:^id(OSSTask *task) {
NSLog(@"objectKey: %@", append.objectKey);
if (!task.error) {
NSLog(@"append object success!");
OSSAppendObjectResult * result = task.result;
NSString * etag = result.eTag;
long nextPosition = result.xOssNextAppendPosition;
} else {
NSLog(@"append object failed, error: %@" , task.error);
}
return nil;
}];
関連ドキュメント
追加アップロードを実行するために呼び出すことができるAPI操作の詳細については、「AppendObject」をご参照ください。
OSSClientインスタンスを初期化する方法の詳細については、「初期化」をご参照ください。