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

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

最終更新日:Dec 22, 2023

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

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

String asPartFile = "<path/to/file>"; // Splits the large file to be uploaded into two upload parts
String objectkey = "bigFile.dat";
OSSMultipart multipart = ossService.getOssMultipart(bucket, objectkey);
multipart.setContentType("binary/raw");

String uploadId = multipart.initiateMultiPartUpload();

File file = new File(asPartFile);
InputStream inputStream = new FileInputStream(file);
multipart.setUploadpart(1, inputStream, 128 * 1024); // The first part uploads the first 128kb
multipart.uploadPart();

byte[] data = ToolKit.readFullyToByteArray(inputStream);
multipart.setUploadpart(2, data); // The second part uploads the remaining data
multipart.uploadPart();

List<UploadPartInfo> info = multipart.listParts(); // If needed, this shows which parts have been uploaded

multipart.completeMultipartUpload();

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

String asPartFile = "<path/to/file>"; // Splits the large file to be uploaded into two upload parts
String objectkey = "bigFile.dat";
OSSMultipart multipart1 = ossService.getOssMultipart(bucket, objectkey);
multipart1.setContentType("binary/raw");

uploadId = multipart1.initiateMultiPartUpload();

List<UploadPartResult> list = new ArrayList<>();

OSSMultipart multipart2 = ossService.getOssMultipart(bucket, objectkey);
multipart2.designateUploadId(uploadId); // The necessary upload ID, specifies the corresponding upload task

file = new File(asPartFile);
inputStream = new FileInputStream(file);
multipart2.setUploadpart(1, inputStream, 128 * 1024);
result1 = multipart2.uploadPart();
list.add(result1);

OSSMultipart multipart3 = ossService.getOssMultipart(bucket, objectkey);
multipart3.designateUploadId(uploadId); // The necessary upload ID, specifies the corresponding upload task

byte[] data = ToolKit.readFullyToByteArray(inputStream);
multipart3.setUploadpart(2, data);
result2 = multipart3.uploadPart();
list.add(result2);

// If needed, this shows which parts have been uploaded
OSSMultipart multipart4 = ossService.getOssMultipart(bucket, objectkey);
multipart4.designateUploadId(uploadId); // Specifies the corresponding upload task
List<UploadPartInfo> info = multipart4.listParts();

OSSMultipart multipart5 = ossService.getOssMultipart(bucket, objectkey);
multipart5.designateUploadId(uploadId); // Specifies the corresponding upload task
multipart5.designatePartList(list); // Specifies the information of the locally saved parts that have been uploaded
multipart5.completeMultipartUpload();

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