すべてのプロダクト
Search
ドキュメントセンター

:ファイル操作

最終更新日:Dec 22, 2023

ファイル操作

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);
}];