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

:オブジェクトのアップロード

最終更新日:Feb 21, 2024

このトピックでは、AndroidでオブジェクトをOSSにアップロードする方法について説明します。

簡易アップロード

簡易アップロードでは、PutObject操作を使用して、選択したオブジェクトを一度にOSSにアップロードします。 詳細は、OSS APIリファレンスの「PutObject」をご参照ください。
  • 処理ロジック
    1. [アップロード] を選択した後、ロードするローカルファイルを選択できます。
    2. OssDemoはsts_serverのアドレスを取得した後にリクエストを送信します。
    3. sts_serverは、AccessKeyId、AccessKeySecret、SecurityToken、およびExpirationを返します。
    4. 情報を取得した後、OssDemoはSDKを呼び出してOSSClientを作成し、簡単なアップロードを実行します。
  • コード分析
    1. Buttonコントロールを生成します。
      場所:
       res/layout/content_main.xml
       内容:
       <Button
           style="? android:attr/buttonStyleSmall"
           android:layout_height="wrap_content"
           android:layout_width="wrap_content"
           android:text="@ string/upload"
           android:id="@ + id/upload" /> 
    2. [アップロード] をクリックします。 アップロードするオブジェクトを選択します。

      関数実装のコードセグメント:

      Button upload = (Button) findViewById(R.id.upload);
       upload.setOnClickListener(new View.OnClickListener() {
           @オーバーライド
           public void onClick(View v) {
               Intent i = new Intent(
                       Intent.ACTION_PICK,
                       android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
               startActivityForResult(i, RESULT_UPLOAD_IMAGE);
           }
       }
    3. SDKのアップロードAPI操作を呼び出します。

      関数実装のコードセグメント:

      @ オーバーライド
       protected void onActivityResult(int requestCode, int resultCode, Intent data) {
           super.onActivityResult(requestCode, resultCode, data);
           if ((requestCode == RESULT_UPLOAD_IMAGE | | requestCode === RESULT_PAUSEABLEUPLOAD_IMAGE) && resultCode == RESULT_OK && null != data) {
               Uri selectedImage = data.getData();
               String[] filePathColumn = { MediaStore.Images.Media.DATA };
               Cursor cursor = getContentResolver().query(selectedImage,
                       filePathColumn, null, null, null);
               cursor.moveToFirst();
               int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
               String picturePath = cursor.getString(columnIndex);
               Log.d("PickPicture", picturePath);
               cursor.close();
               try {
                   Bitmap bm = ImageDisplayer.autoResizeFromLocalFile(picturePath);
                   displayImage(bm);
                   File file = new File(picturePath);
                   displayInfo("object: " + picturePath + "\nsize: " + String.valueOf(file.length()));
               }
               catch (IOException e) {
                   e.printStackTrace();
                   displayInfo(e.toString());
               }
               // さまざまな操作に基づいてオブジェクトをアップロードします。
               if (requestCode == RESULT_UPLOAD_IMAGE) {
                   final EditText editText = (EditText) findViewById(R.id.edit_text);
                   String objectName = editText.getText().toString();
                   // 単純なアップロード操作を呼び出して、オブジェクトをアップロードします。
                   ossService.asyncPutImage(objectName, picturePath, getPutCallback(), new ProgressCallbackFactory<PutObjectRequest>().get());
               }
           }
       }

      ここでは、アップロード結果の処理を省略する。 詳細については、ソースコードのonSuccessとonFailureを参照してください。

マルチパートアップロードベースの再開可能アップロード

OSSのMultipartUpload操作を呼び出して、再開可能なアップロードを実装できます。
  • 処理ロジック
    1. [アップロード] を選択した後、ロードするローカルファイルを選択できます。
    2. OssDemoはsts_serverのアドレスを取得した後にリクエストを送信します。
    3. sts_serverは、AccessKeyId、AccessKeySecret、SecurityToken、およびExpirationを返します。
    4. 情報を取得した後、OssDemoはSDKを呼び出してOSSClientを作成し、マルチパートアップロードを実行します。
    5. [一時停止] をクリックします。 マルチパートアップロードタスクが完了していない場合は、[続行] をクリックして、最後のアップロードが停止した位置からアップロードを再開します。
  • コード分析
    1. Buttonコントロールを生成します。
      場所:
       res/layout/content_main.xml
       内容:
       <Button
           style="? android:attr/buttonStyleSmall"
           android:layout_height="wrap_content"
           android:layout_width="wrap_content"
           android:text="@string/multipart_upload"
           android:id="@ + id/multipart_upload" /> 
    2. [アップロード] をクリックします。 アップロードするオブジェクトを選択します。

      関数実装のコードセグメント:

      Button multipart_upload = (ボタン) findViewById(R.id.multipart_upload);
       multipart_upload.setOnClickListener(new View.OnClickListener() {
           @オーバーライド
           public void onClick(View v) {
               // アップロードの同時実行を簡素化するには、再開可能なアップロードタスクを1つだけ実行します。
               Intent i = new Intent(
                       Intent.ACTION_PICK,
                       android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
               startActivityForResult(i, RESULT_PAUSEABLEUPLOAD_IMAGE);
           }
       }
       );
    3. [続行] をクリックして再開可能なアップロードを完了します。

      関数実装のコードセグメント:

      Upload: // SDKのMultipartUpload操作を呼び出して、オブジェクトをアップロードします。 task = ossService.asyncMultiPartUpload(objectName, picturePath, getMultiPartCallback().addCallback(new Runnable()) { @ Override public void run() { pauseTaskStatus = TASK_NONE; multipart_resume.setEnabled(false); multipart_pause.ack}): <; (null; Factory}) multiPartUploadManagerでasyncUploadを使用して再開可能なアップロードを実装します。 // 再開可能なアップロード中に、PauseableUploadTaskを呼び出してタスクを一時停止できます。 public PauseableUploadTask asyncMultiPartUpload(String object, String localFile, @ NonNull final OSSCompletedCallback<PauseableUploadRequest, PauseableUploadResult> userCallback, final OSSProgressCallback<PauseableUpload Request> userProgressCallback) { ifファイル (""; "" "Log."; Oblocalaudable; Nlocalaudファイルの場合 file.exists()) { Log.w("AsyncMultiPartUpload", "FileNotExist"); Log.w("LocalFile", localFile); return null; } Log.d("MultiPartUpload", localFile); PauseableUploadTask task=multiUploadManager. asyncUpload(object、userCallback、userCallback、userCallback) タスク};;