次のサンプルコードは、`examplefile.txt` という名前のローカルファイルを `examplebucket` バケットの `exampledir` ディレクトリに非同期でアップロードする方法の例です。ローカルファイルがアップロードされると、オブジェクト名は `exampleobject.txt` になります。チェックポイントファイルはご利用のコンピューターに保存されます。
// バケット名を指定します。例: examplebucket。
String bucketName = "examplebucket";
// オブジェクトの完全なパスを指定します。例: exampledir/exampleobject.txt。 完全なパスにバケット名を含めることはできません。
String objectName = "exampledir/exampleobject.txt";
// ファイルの完全なパスを指定します。例: /storage/emulated/0/oss/examplefile.txt。
String localFilepath = "/storage/emulated/0/oss/examplefile.txt";
String recordDirectory = Environment.getExternalStorageDirectory().getAbsolutePath() + "/oss_record/";
File recordDir = new File(recordDirectory);
// ブレークポイントレコードを保存するパスが存在することを確認します。パスが存在しない場合は作成します。
if (!recordDir.exists()) {
recordDir.mkdirs();
}
// 再開可能なアップロードリクエストを作成し、ブレークポイントレコードファイルを保存するパスを指定します。パスは絶対パスである必要があります。
ResumableUploadRequest request = new ResumableUploadRequest(bucketName, objectName, localFilepath, recordDirectory);
// OSSAsyncTask の cancel() メソッドを呼び出す際に DeleteUploadOnCancelling を false に設定すると、ブレークポイントレコードファイルの削除が防止されます。これにより、次回同じファイルをアップロードする際に、ブレークポイントからアップロードを再開できます。このパラメーターを設定しない場合のデフォルト値は true で、ブレークポイントレコードファイルは削除されます。その結果、次回同じファイルをアップロードする際は、最初からアップロードが開始されます。
request.setDeleteUploadOnCancelling(false);
// アップロードの進行状況のコールバックを設定します。
request.setProgressCallback(new OSSProgressCallback<ResumableUploadRequest>() {
@Override
public void onProgress(ResumableUploadRequest request, long currentSize, long totalSize) {
Log.d("resumableUpload", "currentSize: " + currentSize + " totalSize: " + totalSize);
}
});
OSSAsyncTask resumableTask = oss.asyncResumableUpload(request, new OSSCompletedCallback<ResumableUploadRequest, ResumableUploadResult>() {
@Override
public void onSuccess(ResumableUploadRequest request, ResumableUploadResult result) {
Log.d("resumableUpload", "success!");
}
@Override
public void onFailure(ResumableUploadRequest request, ClientException clientExcepion, ServiceException serviceException) {
// 例外を処理します。
}
});
// 再開可能なアップロードタスクが完了するのを待ちます。
resumableTask.waitUntilFinished();
次のサンプルコードは、Android 10 以降のスコープストレージで、ファイルの URI を使用してファイルを OSS にアップロードする方法の例です。
// バケット名を指定します。例: examplebucket。
String bucketName = "examplebucket";
// オブジェクトの完全なパスを指定します。例: exampledir/exampleobject.txt。 完全なパスにバケット名を含めることはできません。
String objectName = "exampledir/exampleobject.txt";
String recordDirectory = getApplication().getFilesDir().getAbsolutePath() + "/oss_record/";
File recordDir = new File(recordDirectory);
// ブレークポイントレコードを保存するフォルダが存在することを確認します。フォルダが存在しない場合は作成します。
if (!recordDir.exists()) {
recordDir.mkdirs();
}
// 再開可能なアップロードリクエストを作成し、ブレークポイントレコードファイルを保存するパスを指定します。パスは絶対パスである必要があります。
// "fileUri" パラメーターは、ファイルの実際の URI に設定する必要があります。
ResumableUploadRequest request = new ResumableUploadRequest(bucketName, objectName, fileUri, recordDirectory);
// OSSAsyncTask の cancel() メソッドを呼び出す際に DeleteUploadOnCancelling を false に設定すると、ブレークポイントレコードファイルの削除が防止されます。これにより、次回同じファイルをアップロードする際に、ブレークポイントからアップロードを再開できます。このパラメーターを設定しない場合のデフォルト値は true で、ブレークポイントレコードファイルは削除されます。その結果、次回同じファイルをアップロードする際は、最初からアップロードが開始されます。
request.setDeleteUploadOnCancelling(false);
// アップロードのコールバックを設定します。
request.setProgressCallback(new OSSProgressCallback<ResumableUploadRequest>() {
@Override
public void onProgress(ResumableUploadRequest request, long currentSize, long totalSize) {
Log.d("resumableUpload", "currentSize: " + currentSize + " totalSize: " + totalSize);
}
});
OSSAsyncTask resumableTask = oss.asyncResumableUpload(request, new OSSCompletedCallback<ResumableUploadRequest, ResumableUploadResult>() {
@Override
public void onSuccess(ResumableUploadRequest request, ResumableUploadResult result) {
Log.d("resumableUpload", "success!");
}
@Override
public void onFailure(ResumableUploadRequest request, ClientException clientExcepion, ServiceException serviceException) {
// 例外を処理します。
}
});
// 再開可能なアップロードタスクが完了するのを待ちます。
resumableTask.waitUntilFinished();
次のサンプルコードは、チェックポイントファイルをご利用のコンピューターに保存せずに再開可能なアップロードを実行する方法の例です。
// バケット名を指定します。例: examplebucket。
String bucketName = "examplebucket";
// オブジェクトの完全なパスを指定します。例: exampledir/exampleobject.txt。 完全なパスにバケット名を含めることはできません。
String objectName = "exampledir/exampleobject.txt";
// ファイルの完全なパスを指定します。例: /storage/emulated/0/oss/examplefile.txt。
String localFilepath = "/storage/emulated/0/oss/examplefile.txt";
// 再開可能なアップロードリクエストを作成します。
ResumableUploadRequest request = new ResumableUploadRequest(bucketName, objectName, localFilepath);
// アップロードの進行状況のコールバックを設定します。
request.setProgressCallback(new OSSProgressCallback<ResumableUploadRequest>() {
@Override
public void onProgress(ResumableUploadRequest request, long currentSize, long totalSize) {
Log.d("resumableUpload", "currentSize: " + currentSize + " totalSize: " + totalSize);
}
});
// 再開可能なアップロードメソッドを非同期で呼び出します。
OSSAsyncTask resumableTask = oss.asyncResumableUpload(request, new OSSCompletedCallback<ResumableUploadRequest, ResumableUploadResult>() {
@Override
public void onSuccess(ResumableUploadRequest request, ResumableUploadResult result) {
Log.d("resumableUpload", "success!");
}
@Override
public void onFailure(ResumableUploadRequest request, ClientException clientExcepion, ServiceException serviceException) {
// 例外を処理します。
}
});
// 再開可能なアップロードタスクが完了するのを待ちます。
resumableTask.waitUntilFinished();