ファイル操作
OSS iOS SDK では、ファイル操作セットが ‘OSSFile’ クラスに配置されます。このクラスは ‘OSSData’ とほぼ同じように機能します。実際、重要な違いは、’OSSData’ はメモリ内のデータの取得に使用できるのに対し、’OSSFile’ は端末でローカルファイルを直接アップロードしたり、OSS データをローカルファイルにダウンロードするために使用する点です。
大きなファイルのアップロードは時間がかかり、さまざまな例外によりアップロードが途中で失敗することがあるため、OSS iOS SDK には大きなファイルのアップロード用にデータ転送を再開するためのインターフェイスが用意されています。
1. ファイルへのダウンロード
ファイルへのダウンロードはデータのダウンロードに似ていますが、ダウンロード先のファイルパスを指定する必要があります。ダウンロードメソッドはデータを返しません。
NSError *error = nil;
OSSFile *testFile = [ossService getOSSFileWithBucket:ossBucket key:@"<objectName>"];
[testFile downloadTo:yourPath error:&error];
ダウンロードするデータ範囲の指定に使用するコードは次のようになります。
NSError *error = nil;
OSSFile *testFile = [ossService getOSSFileWithBucket:ossBucket key:@"<objectName>"];
[testFile setRangeFrom:1 to:0.];
[testFile downloadTo:yourPath error:&error];
非同期バージョン:
[testFile downloadTo:toPath withDownloadCallback:^(BOOL isSuccess, NSError *error) {
if (isSuccess) {
NSLog(@"Download file success!");
} else {
NSLog(@"Error: %@", error);
}
} withProgressCallback:^(float progress) {
NSLog(@"Current progress: %f", progress);
}];
指定されるデータ範囲の非同期バージョン:
[testFile setRangeFrom:1 to:0.];
[testFile downloadTo:toPath withDownloadCallback:^(BOOL isSuccess, NSError *error) {
if (isSuccess) {
NSLog(@"Download file success!"];
} else {
NSLog(@"Error: %@", error);
}
} withProgressCallback:^(float progress) {
NSLog(@"Current progress: %f", progress);
}];
2. ファイルからのアップロード
アップロードする前に、アップロードするファイルのパスを指定し、そのコンテンツタイプを指定する必要があります。
NSError *error = nil;
OSSFile *testFile = [ossService getOSSFileWithBucket:ossBucket key:key];
[testData enableUploadCheckMd5sum:YES]; // Enables the upload MD5 check
[testFile setPath:@"your path" withContentType:@"<fileType>"];
[testFile upload:&error];
非同期バージョン:
[testFile uploadWithUploadCallback:^(BOOL isSuccess, NSError *error) {
if (isSuccess) {
NSLog(@"Upload file success!");
} else {
NSLog(@"Error: %@", error);
}
} withProgressCallback:^(float progress) {
NSLog(@"Current progress: %f", progress);
}];
3. その他の一般的な操作
‘OSSFile’ と ‘OSSData’ の違いについては、前の 2 つのセクションで既に説明しました。どちらも OSS に格納されるデータセグメントであるため、OSS の観点からは明らかな違いはありません。したがって、アップロード/ダウンロードインターフェイスでデータ形式が異なることを除き、コピーや削除など、他のインターフェイスは同じように機能します。
したがって、これらについてはここでは説明しません。
4. 再開可能なデータ転送
大きいファイルのアップロードには時間がかかるため、アップロードプロセスは失敗する可能性が高くなります。そのため、OSS Android SDK にはデータ転送を再開するためのインターフェイスがあります。このインターフェイスを次に呼び出すと、最後の操作の中断ポイントからアップロードが継続されます。最後のアップロードが成功している場合、データは再度アップロードされて元のターゲットが上書きされます。
このインターフェイスは非同期バージョンでのみ使用できます。次にサンプルコードを示します。
マルチパートアップロード:
OSSFile *testFile = [ossService getOSSFileWithBucket:ossBucket key:key];
[testFile setPath:@"your path" withContentType:@"<fileType>"];
[testFile resumableUploadWithUploadCallback:^(BOOL isSuccess, NSError *error) {
if (isSuccess) {
NSLog(@"Upload file success!");
} else {
NSLog(@"Error: %@", error);
}
} withProgressCallback:^(float progress) {
NSLog(@"Current progress: %f", progress);
}];