edit-icon download-icon

ファイル操作

最終更新日: Sep 14, 2016

OSS iOS SDK では、ファイル操作セットが ‘OSSFile’ クラスに配置されます。このクラスは ‘OSSData’ とほぼ同じように機能します。実際、重要な違いは、’OSSData’ はメモリ内のデータの取得に使用できるのに対し、’OSSFile’ は端末でローカルファイルを直接アップロードしたり、OSS データをローカルファイルにダウンロードするために使用する点です。

大きなファイルのアップロードは時間がかかり、さまざまな例外によりアップロードが途中で失敗することがあるため、OSS iOS SDK には大きなファイルのアップロード用にデータ転送を再開するためのインターフェイスが用意されています。

1. ファイルへのダウンロード

ファイルへのダウンロードはデータのダウンロードに似ていますが、ダウンロード先のファイルパスを指定する必要があります。ダウンロードメソッドはデータを返しません。

  1. NSError *error = nil;
  2. OSSFile *testFile = [ossService getOSSFileWithBucket:ossBucket key:@"<objectName>"];
  3. [testFile downloadTo:yourPath error:&error];

ダウンロードするデータ範囲の指定に使用するコードは次のようになります。

  1. NSError *error = nil;
  2. OSSFile *testFile = [ossService getOSSFileWithBucket:ossBucket key:@"<objectName>"];
  3. [testFile setRangeFrom:1 to:0.];
  4. [testFile downloadTo:yourPath error:&error];

非同期バージョン:

  1. [testFile downloadTo:toPath withDownloadCallback:^(BOOL isSuccess, NSError *error) {
  2. if (isSuccess) {
  3. NSLog(@"Download file success!");
  4. } else {
  5. NSLog(@"Error: %@", error);
  6. }
  7. } withProgressCallback:^(float progress) {
  8. NSLog(@"Current progress: %f", progress);
  9. }];

指定されるデータ範囲の非同期バージョン:

  1. [testFile setRangeFrom:1 to:0.];
  2. [testFile downloadTo:toPath withDownloadCallback:^(BOOL isSuccess, NSError *error) {
  3. if (isSuccess) {
  4. NSLog(@"Download file success!"];
  5. } else {
  6. NSLog(@"Error: %@", error);
  7. }
  8. } withProgressCallback:^(float progress) {
  9. NSLog(@"Current progress: %f", progress);
  10. }];

2. ファイルからのアップロード

アップロードする前に、アップロードするファイルのパスを指定し、そのコンテンツタイプを指定する必要があります。

  1. NSError *error = nil;
  2. OSSFile *testFile = [ossService getOSSFileWithBucket:ossBucket key:key];
  3. [testData enableUploadCheckMd5sum:YES]; // Enables the upload MD5 check
  4. [testFile setPath:@"your path" withContentType:@"<fileType>"];
  5. [testFile upload:&error];

非同期バージョン:

  1. [testFile uploadWithUploadCallback:^(BOOL isSuccess, NSError *error) {
  2. if (isSuccess) {
  3. NSLog(@"Upload file success!");
  4. } else {
  5. NSLog(@"Error: %@", error);
  6. }
  7. } withProgressCallback:^(float progress) {
  8. NSLog(@"Current progress: %f", progress);
  9. }];

3. その他の一般的な操作

‘OSSFile’ と ‘OSSData’ の違いについては、前の 2 つのセクションで既に説明しました。どちらも OSS に格納されるデータセグメントであるため、OSS の観点からは明らかな違いはありません。したがって、アップロード/ダウンロードインターフェイスでデータ形式が異なることを除き、コピーや削除など、他のインターフェイスは同じように機能します。

したがって、これらについてはここでは説明しません。

4. 再開可能なデータ転送

大きいファイルのアップロードには時間がかかるため、アップロードプロセスは失敗する可能性が高くなります。そのため、OSS Android SDK にはデータ転送を再開するためのインターフェイスがあります。このインターフェイスを次に呼び出すと、最後の操作の中断ポイントからアップロードが継続されます。最後のアップロードが成功している場合、データは再度アップロードされて元のターゲットが上書きされます。

このインターフェイスは非同期バージョンでのみ使用できます。次にサンプルコードを示します。

マルチパートアップロード:

  1. OSSFile *testFile = [ossService getOSSFileWithBucket:ossBucket key:key];
  2. [testFile setPath:@"your path" withContentType:@"<fileType>"];
  3. [testFile resumableUploadWithUploadCallback:^(BOOL isSuccess, NSError *error) {
  4. if (isSuccess) {
  5. NSLog(@"Upload file success!");
  6. } else {
  7. NSLog(@"Error: %@", error);
  8. }
  9. } withProgressCallback:^(float progress) {
  10. NSLog(@"Current progress: %f", progress);
  11. }];