2017-11-09 3 views
0

私のアプリケーションで実際に何をするのが画像をキャプチャしてディスクに保存してからs3にアップロードします。私はAndroid appからs3に画像をアップロードしていますが、アップロードされた画像もありますが、アップロードに失敗した画像があります。

アップロードする私のコードは、画像が保存されている場合、私はちょうど(ファイルアップロードを呼び出す

public void credentialsProvider(){ 

     // Initialize the Amazon Cognito credentials provider 
     CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
       getApplicationContext(), 
       "ap-south-1:---------------", // Identity Pool ID 
       Regions.AP_SOUTH_1 // Region 
     ); 

     setAmazonS3Client(credentialsProvider); 
    } 

    /** 
    * Create a AmazonS3Client constructor and pass the credentialsProvider. 
    * @param credentialsProvider 
    */ 
    public void setAmazonS3Client(CognitoCachingCredentialsProvider credentialsProvider){ 

     // Create an S3 client 
     s3 = new AmazonS3Client(credentialsProvider); 

     // Set the region of your S3 bucket 
     s3.setRegion(Region.getRegion(Regions.AP_SOUTH_1)); 


    } 

    public void setTransferUtility(){ 

     transferUtility = new TransferUtility(s3, getApplicationContext()); 
    } 

    /** 
    * This method is used to upload the file to S3 by using TransferUtility class 
    * 
    */ 
    public void fileUpload(){ 

     TransferObserver transferObserver = transferUtility.upload(
       "train-faces",  /* The bucket to upload to */ 
       time1+date1+"_"+"1" + "_pic.jpg", /* The key for the uploaded object */ 
       fileToUpload  /* The file where the data to upload exists */ 
     ); 

     transferObserverListener(transferObserver); 
    } 



    /** 
    * This is listener method of the TransferObserver 
    * Within this listener method, we get status of uploading and downloading file, 
    * to display percentage of the part of file to be uploaded or downloaded to S3 
    * It displays an error, when there is a problem in uploading or downloading file to or from S3. 
    * @param transferObserver 
    */ 

    public void transferObserverListener(TransferObserver transferObserver){ 

     transferObserver.setTransferListener(new TransferListener(){ 

      @Override 
      public void onStateChanged(int id, TransferState state) { 
       if (state.COMPLETED.equals(transferObserver.getState())) { 
        Toast.makeText(CameraService.this, "File Upload Complete", Toast.LENGTH_SHORT).show(); 
        fileToUpload.delete(); 
       } 
       Log.e(TAG, "statechange"+state+""); 
      } 

      @Override 
      public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) { 
       int percentage = (int) (bytesCurrent/bytesTotal * 100); 
       Log.e(TAG,"percentage"+percentage +""); 
       if (percentage==100){ 
        //fileToUpload.delete(); 
       } 

      } 

      @Override 
      public void onError(int id, Exception ex) { 
       Log.e(TAG,"error"+"error"); 

      } 

     }); 
    } 

です)時々、画像が正常に私が手にいくつかの回をアップロードなっている: は、HTTPリクエストを実行するため、できないにアップロードに失敗しました。 7ホスト名に関連付けられたホストアドレスを解決できません

私はこれをより信頼性の高いものにして、アプリケーションのアップロードの失敗を避ける方法をこれで実現したいと思います。

+0

私はWi-Fiやモバイルデータをテストしていると、ネットワークの問題があると思いますか? –

+0

私は両方の場合(WiFi&モバイルデータ)の成功率は、モバイルデータを使用してより多くの場合にテストしました。 –

+0

@HareshChhelanaアップロードした画像150枚が失敗してしまった。 –

答えて

0

私は7 unable to resolve host no address associated with hostnameエラーは発生しませんでしたが、これは一般にHemantのようにネットワークに問題がある場合に発生します。

読み取りタイムアウトエラーFailed to upload: 196 due to Unable to execute HTTP request: Read timed outに関しては、これはネットワーク上の問題である場合とそうでない場合があります。もちろん、悪いネットワークがこれを間違いなく引き起こす可能性がありますが、ネットワークの問題がなくても失敗したアップロードを示すTransferUtilityの既知の問題がありました。

純粋なネットワークの問題の場合は、提案されているようにソケットのタイムアウトを長くすると、エラーが修正/軽減される可能性があります。

ClientConfiguration cc = new ClientConfiguration(); 
cc.setSocketTimeout(120000); AmazonS3 s3 = new AmazonS3Client(credentialsProvider, cc); 

タイムアウトを、あなたの好みに従っていくらか高い値に設定してください。これでエラーが修正または軽減されない場合、&はネットワークに問題がないと確信しており、TransferUtility自体に問題がある可能性があります。ユーザーは大容量のファイルを直接アップロードするとこのエラーが発生することに言及し、一人で使用する回避策はアップロード前に1Kbのダミーファイルをアップロードすることでしたが、これは明らかに解決策ではありません。詳細は、this postを参照してください。私は個人的に悪いネットワークだけでこのエラーに直面しているので、回避策が有効かどうか、およびSDKのそれ以降のリリースでこの問題が修正されているかどうかは確認できません。

関連する問題