2017-11-11 66 views
0

ビデオファイルをAmazon S3バケットに送信するアプリケーションを作成していますが、apkを携帯電話に再アップロードする前に1つのビデオしか送信できません。スローされたエラーは、サービスの「BadDigest」エラー(「Amazon S3」)と関係がある。以下は出力エラーです。AWS s3バケットの「content-MD5」でエラーが発生しました

11-08 23:56:33.805 26045-26045/org.----------.videorecorder_aws W/System.err: com.amazonaws.services.s3.model.AmazonS3Exception: The Content-MD5 you specified did not match what we received. (Service: Amazon S3; Status Code: 400; Error Code: BadDigest; Request ID: 3345945A95914871), S3 Extended Request ID: pSWjCNJ6sMOiFytjZr0PRn9rns3jFoMkECoI+lfXgF0agfQTY4CdvXlsYJbCBK9qYE/OoAkWTrY= 
11-08 23:56:33.806 26045-26045/org.----------.videorecorder_aws W/System.err:  at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:729) 
11-08 23:56:33.806 26045-26045/org.----------.videorecorder_aws W/System.err:  at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:405) 
11-08 23:56:33.806 26045-26045/org.----------.videorecorder_aws W/System.err:  at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:212) 
11-08 23:56:33.806 26045-26045/org.----------.videorecorder_aws W/System.err:  at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4625) 
11-08 23:56:33.807 26045-26045/org.----------.videorecorder_aws W/System.err:  at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1728) 
11-08 23:56:33.807 26045-26045/org.----------.videorecorder_aws W/System.err:  at com.amazonaws.mobileconnectors.s3.transferutility.UploadTask.uploadSinglePartAndWaitForCompletion(UploadTask.java:214) 
11-08 23:56:33.807 26045-26045/org.----------.videorecorder_aws W/System.err:  at com.amazonaws.mobileconnectors.s3.transferutility.UploadTask.call(UploadTask.java:88) 
11-08 23:56:33.807 26045-26045/org.----------.videorecorder_aws W/System.err:  at com.amazonaws.mobileconnectors.s3.transferutility.UploadTask.call(UploadTask.java:47) 
11-08 23:56:33.807 26045-26045/org.----------.videorecorder_aws W/System.err:  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
11-08 23:56:33.808 26045-26045/org.----------.videorecorder_aws W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
11-08 23:56:33.808 26045-26045/org.----------.videorecorder_aws W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
11-08 23:56:33.808 26045-26045/org.----------.videorecorder_aws W/System.err:  at java.lang.Thread.run(Thread.java:762) 

さらに詳しい情報が必要な場合はお知らせください。これはかなり時間がかかる質問です。

EDIT donkonに応じて1 、ここで私は、サーバーへの私のファイルを送信するために使用していたコードは次のとおりです。

public void submitVideoToS3Bucket(){ 
    TransferUtility transferUtility = new TransferUtility(s3, getApplicationContext()); 

    File directory = new File(getFilesDir(), "Reflex"); 
    final File CameraFile = new File(directory, "camera-temp.mp4"); 

    Date now = new Date(); 
    String videoName = now.toString().concat(".mp4").replace(" ", "_").replace(":", ""); 

    TransferObserver observer = transferUtility.upload(Constants.BUCKET_NAME, videoName, CameraFile); 

    observer.setTransferListener(new TransferListener() { 

     @Override 
     public void onStateChanged(int id, TransferState state) { 
      if (TransferState.COMPLETED == state) { 
      } 
      System.out.println("state change"); 
     } 

     @Override 
     public void onProgressChanged(
       int id, long bytesCurrent, long bytesTotal) { 
     } 

     @Override 
     public void onError(int id, Exception ex) { 
      ex.printStackTrace(); 
     } 
    }); 
    if (TransferState.COMPLETED == observer.getState()) { 
     // Handle a completed upload. 
     Intent cameraIntent = new Intent(this, CameraActivity.class); 
     startActivity(cameraIntent); 
    } 
} 
+0

まだアイデアはありませんが、AWSフォーラムにまだ投稿していない場合は投稿する必要があります。あなたがそれを買うことができれば、AWSのサポートも非常に良いです。 – nasch

+0

エラーを再現するためのコードとサンプルファイルを提供できますか?どのSDKのバージョンを使用していますか? – donkon

+0

アップロードするとコンテンツが変更されますか? –

答えて

0

問題は、あなたがそれをアップロードしていると、コンテンツが変更されていることです。静的なファイル(つまり、録画を終えたビデオ)をアップロードするコードを使ってみてください。うまくいくはずです。

+0

"public void submitVideoToS3Bucket()"を "public static ..."に変更すると、もう機能しません。これを変更して静的ファイルをアップロードするにはどうすればよいですか? –

+0

アップロードを開始する前に、ビデオの録画と保存が完了している必要があります。 –

関連する問題