You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android端Amazon S3图片上传遇TransferUtility未配置默认桶异常求助

解决Amazon S3 TransferUtility 无默认Bucket的上传异常

Hey there! That error message is spelling out exactly what's going wrong—your TransferUtility instance isn't configured with a default bucket, and you're using an upload method that expects one. Let's fix this with two straightforward approaches:

方法一:构造TransferUtility时指定默认Bucket

When creating your TransferUtility, you can set your target bucket as the default right in the builder. Here's a complete, runnable code example:

import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.mobileconnectors.s3.transferutility.TransferUtility;
import java.io.File;

// 初始化AWS凭证
BasicAWSCredentials awsCredentials = new BasicAWSCredentials("your-access-key", "your-secret-key");
AmazonS3Client s3Client = new AmazonS3Client(awsCredentials);

// 构造TransferUtility时绑定默认Bucket
TransferUtility transferUtility = TransferUtility.builder()
        .s3Client(s3Client)
        .defaultBucketName("your-bucket-name") // 填入你的Bucket名称
        .build();

// 获取要上传的图片文件
File targetImage = new File("your-file-path");

// 现在可以直接调用无需传Bucket的upload方法
transferUtility.upload("your-file-name", targetImage);

方法二:上传时显式指定Bucket名称

If you don't want to set a global default bucket, just use the overload of upload that accepts the bucket name as the first parameter. This is the quickest fix if you only need to upload to this bucket once:

// 初始化凭证和S3Client(和上面一致)
BasicAWSCredentials awsCredentials = new BasicAWSCredentials("your-access-key", "your-secret-key");
AmazonS3Client s3Client = new AmazonS3Client(awsCredentials);
TransferUtility transferUtility = TransferUtility.builder()
        .s3Client(s3Client)
        .build();

File targetImage = new File("your-file-path");

// 显式传入Bucket名称,绕过默认配置要求
transferUtility.upload("your-bucket-name", "your-file-name", targetImage);

额外提醒

  • Double-check that your IAM user has the s3:PutObject permission for the target bucket—missing permissions can cause upload failures even after fixing this default bucket issue.
  • Add a quick check like if (targetImage.exists()) to make sure your file path is correct and the image actually exists on the device.
  • If you're using AWS SDK v2, the syntax will shift to using S3Client instead of AmazonS3Client, but the core logic stays the same: either set a default bucket or specify it directly in the upload call.

内容的提问来源于stack exchange,提问作者user8601021

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:18:48