当前位置: 代码迷 >> Android >> Android 文件上传到 Amazon S3
  详细解决方案

Android 文件上传到 Amazon S3

热度:147   发布时间:2023-08-04 10:15:48.0

我想将图像上传到我的 s3 存储桶。 我尝试了不同的解决方案来上传文件,例如但我总是收到错误,如 ssl 异常:

无法执行 HTTP 请求:写入错误:ssl=0x55a53d5240:系统调用期间 I/O 错误,连接被对等重置

我发现一条关于此异常的评论 评论是如果您的网络不好,您可能会出错。 但是我的网络很好。

我的代码如下:

private void uploadImage() {

    // Initialize the Amazon Cognito credentials provider
    CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
            getContext().getApplicationContext(),
            "us-west-2:************", // Identity Pool ID
            Regions.US_WEST_2 // Region
    );


    ClientConfiguration configuration = new ClientConfiguration();
    configuration.setConnectionTimeout(50000);
    configuration.setSocketTimeout(300000);

    final AmazonS3 s3 = new AmazonS3Client(credentialsProvider, configuration);

    TransferUtility transferUtility = new TransferUtility(s3, getContext().getApplicationContext());

    LocalImage image = mAddImageAdapter.getLocalImage(0);
    final File mFile = new File(image.getImagePath());
    long len = mFile.length();

    transferUtility.upload("2y1s-images", mFile.getName(), mFile).setTransferListener(new TransferListener() {
        @Override
        public void onStateChanged(int id, TransferState state) {

            Log.i(TAG, "image upload state: " + state.name());
        }

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


            Log.e(TAG, "image upload percentage: " + bytesCurrent + " -" + bytesTotal);
        }

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

            Log.e(TAG, "image upload error: " + ex.getMessage());
        }
    });


}

花了2天后我找到了异常原因。 ssl 异常的主要原因是我的认知凭证和不同区域的 s3 存储桶。 我希望这个答案可以帮助其他人。

  相关解决方案