2016-10-27 22 views
0

aws s3にファイルをアップロードするときにアンドロイドで。正常にアップロードされました。しかし、アップロードされたファイルには公の許可はありません。一般からはアクセスできません。ファイルをamazon s3にアップロードする際に許可を設定する方法

TransferObserver transferObserver = transferUtility.upload( "appname"、 "filename"、file);

私は

TransferObserver transferObserver = transferUtility.upload( "ACS-アンドロイド"、 "ファイル名"、ファイル、CannedAccessControlList.PublicRead)としてコードを書き換えます。

パブリックパーミッションへのアクセスには、エラーが表示されます。

エラー:HTTPリクエストを実行できません:書き込みエラー:ssl = 0xb8f43420:システムコール中のI/Oエラー、ピアによる接続リセット。

完全なコードは

import android.os.Environment; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 
import com.amazonaws.auth.CognitoCachingCredentialsProvider; 
import com.amazonaws.mobileconnectors.s3.transferutility.TransferListener; 
import com.amazonaws.mobileconnectors.s3.transferutility.TransferObserver; 
import com.amazonaws.mobileconnectors.s3.transferutility.TransferState; 
import com.amazonaws.mobileconnectors.s3.transferutility.TransferUtility; 
import com.amazonaws.regions.Regions; 
import com.amazonaws.services.s3.AmazonS3; 
import com.amazonaws.services.s3.AmazonS3Client; 
import com.amazonaws.services.s3.model.AccessControlList; 
import com.amazonaws.services.s3.model.CannedAccessControlList; 
import com.amazonaws.services.s3.model.GroupGrantee; 
import com.amazonaws.services.s3.model.Permission; 
import com.amazonaws.services.s3.model.Region; 

import java.io.File; 

public class MainActivity extends AppCompatActivity { 

Button button; 

File sdcard = Environment.getExternalStorageDirectory(); 
File file = new File(sdcard,"filename"); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    button = (Button) findViewById(R.id.button); 

    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      fileUpload(); 
     } 
    }); 
} 

private void fileUpload() { 

// Initialize the Amazon Cognito credentials provider 
    CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
      getApplicationContext(), 
      "xxx:7e4xxx-xxxxxxxxx-xx-48cfc8f79f6", // Identity Pool ID 
      Regions.REGION // Region 
    ); 

    AmazonS3 s3 = new AmazonS3Client(credentialsProvider); 
    s3.setRegion(com.amazonaws.regions.Region.getRegion(Regions.REGION)); 

    TransferUtility transferUtility = new TransferUtility(s3, this); 



    TransferObserver transferObserver = transferUtility.upload("appname","filename",file,CannedAccessControlList.PublicRead); 


    transferObserver.setTransferListener(new TransferListener() { 
     @Override 
     public void onStateChanged(int id, TransferState state) { 
      if(state == TransferState.COMPLETED) { 
       Toast.makeText(MainActivity.this,"Error",Toast.LENGTH_SHORT).show(); 
      } 

     } 

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

     } 

     @Override 
     public void onError(int id, Exception ex) { 

      Log.e("LOGTAG", "Error : " + ex.getMessage()); 

     } 
    }); 

} 
} 
+0

これはまだ発生していますか? 変更されたのは、一般の閲覧許可を追加したことだけですか? – WestonE

答えて

0

あなたは、私はちょうどこの

TransferObserver transferObserver = transferUtility.upload("acs-android","filename",file,CannedAccessControlList.PublicRead) 

を使用upload()

getTransferManager().upload(
    new PutObjectRequest(String bucketName, String key, File file) 
    .withCannedAcl(CannedAccessControlList.PublicRead) 
); 
+0

私はこのようなコードを持っています。しかし、それはエラーを示しています。 PutObjectRequest = new PutObjectRequest(新しいPutObjectRequest( "acs-android"、fileTempName、file).withCannedAcl(CannedAccessControlList.PublicRead));TransferObserver transferObserver = transferUtility.upload(putObjectRequest); –

+0

そのコードはありますか? – snehasish

0

PutObjectRequestを使用する必要があり、それが正常に動作します。 amazon s3バケットにバケットポリシーが設定されていないことを確認してください。

関連する問題