aws s3에 파일을 업로드하면 android에 있습니다. 성공적으로 업로드되었습니다. 그러나 업로드 된 파일에는 공개 권한이 없습니다. 공개적으로 액세스 할 수 없습니다.android에서 s3을 am3에 업로드 할 때 권한을 설정하는 방법
TransferObserver transferObserver = transferUtility.upload ("appname", "filename", file);
하지만 제가
TransferObserver transferObserver = transferUtility.upload ("ACS-로이드", "이름"파일 CannedAccessControlList.PublicRead)로 코드를 재기록 할 때;
공용 권한 액세스에 오류가 있음을 나타냅니다.
오류 : HTTP 요청을 실행할 수 없습니다. 쓰기 오류 : ssl = 0xb8f43420 : 시스템 호출 중에 입출력 오류, 피어가 연결 재설정.
전체 코드는
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());
}
});
}
}
아직이 문제가 발생합니까? 변경된 유일한 사항은 공개 읽기 권한을 추가하는 것이 확실한가요? – WestonE