再開可能なアップロードを使用してオブジェクトをobject Storage Service (OSS) にアップロードする場合、再開可能なアップロードレコードを格納するチェックポイントファイルのディレクトリを指定できます。 ネットワーク例外またはプログラムエラーのためにオブジェクトのアップロードに失敗した場合、チェックポイントファイルに記録された位置からアップロードタスクが再開されます。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba Cloudサービスを使用してOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSでサポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSecurity Token Service (STS) を使用してOSSClientインスタンスを作成する場合は、「OSSClientインスタンスの作成」をご参照ください。
再開可能アップロードを使用するには、
oss:PutObject
権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。
例
次のサンプルコードは、再開可能なアップロードを実行する方法の例を示します。
com.aliyun.oss.OSSをインポートします。impor t com.aliyun.oss.com mon.auth.*;
com.aliyun.oss.OSSClientBuilderをインポートします。com.aliyun.oss.OSSExceptionをインポートします。com.aliyun.oss.mo delをインポートします。*;
public classデモ {
public static void main(String[] args) {
// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
try {
ObjectMetadata meta = new ObjectMetadata();
// アップロードするコンテンツの種類を指定します。
meta.setContentType("text/plain");
// アップロードするオブジェクトのアクセス制御リスト (ACL) を指定します。
// meta.setObjectAcl(CannedAccessControlList.Private);
// UploadFileRequestを使用して複数のパラメーターを設定します。
// examplebucketなどのバケット名とexampledir/exampleobject.txtなどのオブジェクトの完全パスを指定します。 バケット名をフルパスに含めないでください。
UploadFileRequest uploadFileRequest = new UploadFileRequest("examplebucket","exampledir/exampleobject.txt");
// UploadFileRequestを使用して単一のパラメーターを設定します。
// アップロードするローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。 デフォルトでは、ローカルファイルのパスを指定しない場合、サンプルプログラムが属するプロジェクトのローカルパスからファイルがアップロードされます。
uploadFileRequest.setUploadFile("D :\\ localpath\\examplefile.txt");
// アップロードタスクの同時スレッド数を指定します。 デフォルト値は 1 です。
uploadFileRequest.setTaskNum(5);
// パーツサイズを指定します。 単位:バイト 有効な値: 100 KB〜5 GB。 デフォルト値: 100 KB。
uploadFileRequest.setPartSize(1 * 1024 * 1024);
// 再開可能アップロードを有効にするかどうかを指定します。 デフォルトでは、再開可能アップロードは無効になっています。
uploadFileRequest.setEnableCheckpoint(true);
// 各パーツのアップロード結果を記録するチェックポイントファイルを指定します。 このチェックポイントファイルには、アップロードの進行状況に関する情報が格納されます。 パーツのアップロードに失敗した場合、チェックポイントファイルに記録された進行状況に基づいてタスクを続行できます。 ローカルファイルがアップロードされると、チェックポイントファイルは削除されます。
// デフォルトでは、このパラメーターを指定しないと、このチェックポイントファイルはアップロードするオブジェクトと同じディレクトリを共有します。 ディレクトリの名前は ${uploadFile}.ucpです。
uploadFileRequest.setCheckpointFile("yourCheckpointFile");
// オブジェクトメタデータを設定します。
uploadFileRequest.setObjectMetadata(meta);
// アップロードコールバックを設定します。 パラメータータイプはCallbackです。
// uploadFileRequest.setCallback("yourCallbackEvent");
// Start resumable upload.
ossClient.uploadFile(uploadFileRequest);
} catch (Exception e) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "しかし、何らかの理由でエラー応答で拒否されました。");
System.out.println("エラーメッセージ:" + oe.getErrorMessage());
System.out.println("エラーコード:" + oe.getErrorCode());
System.out.println("リクエストID:" + oe.getRequestId());
System.out.println("ホストID:" + oe.getHostId());
} catch (投げられるce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ 「ネットワークにアクセスできないなど」;
System.out.println("エラーメッセージ:" + ce.getMessage());
} 最後に{
// Shut down the OSSClient instance.
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
参考資料
再開可能アップロードの実行に使用される完全なサンプルコードについては、『GitHub』をご参照ください。