0

ファイルをs3バケットにアップロードしようとしています。しかし、このファイルは公開されることはありません。バケツ内のファイル/フォルダを(アップロードするたびに)公開できるように手動で作成する必要があります。公共の許可を得てS3バケットにAndroidファイルをアップロードする方法

Androidのファイル(ビットマップ)を公開するデフォルトの権限でアップロードする方法はありますか?可能であれば、これをプログラムで行うことをお勧めします。私はs3のドキュメントをチェックしましたが、役に立たないものは見つかりませんでした。

答えて

3

バケット内のすべてのオブジェクトを既定で公開するには、this questionまたはthis questionの回答を参照してください。

あなたがアンドロイドを経由して、それらをアップロードする際に、このようPutObjectRequestにACLを設定し、各ファイルのパブリックアクセスを指定するには:あなたがでACLを設定することができますようにそれが見えない

PutObjectRequest putObjectRequest = new PutObjectRequest() 
    .withCannedAcl(CannedAccessControlList.PublicRead) 

この時点でTransferUtilityとの一歩:https://github.com/aws/aws-sdk-android/issues/63

だからTransferUtility経由でファイルをアップロードした後、次の操作を実行する必要があります:

s3client.setObjectAcl(bucketName, keyName, CannedAccessControlList.PublicRead); 
+1

コードを編集して、転送ユーティリティサービス経由でアップロードしますか? –

+0

@EbadSaghar TransferUtility情報を追加しました。 –

+0

これは私のために働く! http://stackoverflow.com/a/23102551/6042879 –

8

はい、それはアンドロイドでTransferUtilityを使用して公共読めるフォームの任意のファイルをアップロードするための方法以下 使用、TransferUtilityを使用しているそれらの人のための非常に簡単で、

transferUtility.upload(String bucketName,String key,File file,CannedAccessControlList cannedAcl) 

例:

transferUtility.upload("MY_BUCKET_NAME","FileName",your_file,CannedAccessControlList.PublicRead); 
+0

第4引数が間違っています。第4引数としてObjectMetaDataが必要です。 –

+1

こんにちは@HardikJoshi、私のプロジェクトでは、次のライブラリを使用しています - com.amazonaws:aws-android-sdk-core:2.2。+ ' - compile' com.amazonaws:aws-android-sdk-s3:2.2 。+ ' - com.amazonaws:aws-android-sdk-ddb:2.2。+' をコンパイルし、ファイルをアップロードするためのTransferUtilityクラスには4つのメソッドがあります。また、ObjectMetadataをパラメータとして使用している場合は、 4番目のパラメータに "new ObjectMetadata()"を渡します。 –

+1

更新ライブラリを最新バージョンに更新した後、動作します。ありがとう兄貴! –

関連する問題