edit-icon download-icon

独立マルチパートアップロード

最終更新日: Sep 14, 2016

ブレークポイントアップロードがニーズに合っていない場合は、SDK で提供されている独立マルチパートアップロードインターフェイスを使用すると、アップロードの各パートを制御できます。マルチパートアップロードには、[get UploadId]、[upload a single part]、[complete upload]、[list uploaded parts]、および [cancel upload] の 5 つのインターフェイスが関連付けられています。これらのインターフェイスは ‘OSSMultipart’ を介して使用します。マルチパートアップロードタスクを実行するときは、’OSSMultipart’ オブジェクトを使用して続行するか、各インターフェイスを呼び出すときに別の ‘OSSMultipart’ オブジェクトを呼び出すことができます。例:

  1. String asPartFile = "<path/to/file>"; // Splits the large file to be uploaded into two upload parts
  2. String objectkey = "bigFile.dat";
  3. OSSMultipart multipart = ossService.getOssMultipart(bucket, objectkey);
  4. multipart.setContentType("binary/raw");
  5. String uploadId = multipart.initiateMultiPartUpload();
  6. File file = new File(asPartFile);
  7. InputStream inputStream = new FileInputStream(file);
  8. multipart.setUploadpart(1, inputStream, 128 * 1024); // The first part uploads the first 128kb
  9. multipart.uploadPart();
  10. byte[] data = ToolKit.readFullyToByteArray(inputStream);
  11. multipart.setUploadpart(2, data); // The second part uploads the remaining data
  12. multipart.uploadPart();
  13. List<UploadPartInfo> info = multipart.listParts(); // If needed, this shows which parts have been uploaded
  14. multipart.completeMultipartUpload();

1 つのパートでアップロードするデータを設定する場合、データストリームからデータを読み取るか、バイト配列をデータとして直接設定できます。さらに、特殊なニーズに合うように各ステージで別の ‘OSSMultipart’ オブジェクトを使用する必要がある場合は、前のステージからの情報を次のステージのアップロード ID として保存する必要があります。例:

  1. String asPartFile = "<path/to/file>"; // Splits the large file to be uploaded into two upload parts
  2. String objectkey = "bigFile.dat";
  3. OSSMultipart multipart1 = ossService.getOssMultipart(bucket, objectkey);
  4. multipart1.setContentType("binary/raw");
  5. uploadId = multipart1.initiateMultiPartUpload();
  6. List<UploadPartResult> list = new ArrayList<>();
  7. OSSMultipart multipart2 = ossService.getOssMultipart(bucket, objectkey);
  8. multipart2.designateUploadId(uploadId); // The necessary upload ID, specifies the corresponding upload task
  9. file = new File(asPartFile);
  10. inputStream = new FileInputStream(file);
  11. multipart2.setUploadpart(1, inputStream, 128 * 1024);
  12. result1 = multipart2.uploadPart();
  13. list.add(result1);
  14. OSSMultipart multipart3 = ossService.getOssMultipart(bucket, objectkey);
  15. multipart3.designateUploadId(uploadId); // The necessary upload ID, specifies the corresponding upload task
  16. byte[] data = ToolKit.readFullyToByteArray(inputStream);
  17. multipart3.setUploadpart(2, data);
  18. result2 = multipart3.uploadPart();
  19. list.add(result2);
  20. // If needed, this shows which parts have been uploaded
  21. OSSMultipart multipart4 = ossService.getOssMultipart(bucket, objectkey);
  22. multipart4.designateUploadId(uploadId); // Specifies the corresponding upload task
  23. List<UploadPartInfo> info = multipart4.listParts();
  24. OSSMultipart multipart5 = ossService.getOssMultipart(bucket, objectkey);
  25. multipart5.designateUploadId(uploadId); // Specifies the corresponding upload task
  26. multipart5.designatePartList(list); // Specifies the information of the locally saved parts that have been uploaded
  27. multipart5.completeMultipartUpload();

これらのインターフェイスはすべて時間のかかるネットワーク呼び出し操作であることに注意する必要があります。現在のスレッドが妨げられ、OSSException がスローされる可能性があります。例外の処理については、以下の例外処理の章を参照してください。