gpt4 book ai didi

java - 无法使用 Java 在 Amazon S3 中上传文件

转载 作者:搜寻专家 更新时间:2023-11-01 02:31:06 24 4
gpt4 key购买 nike

我是 S3 的初学者,我想用它来存储我计算机的某些文件。我用 Java 编写了一个小程序来上传我所有的文件和文件夹,但我有这个异常(exception):

    Infos: Received error response: Status Code: 403, AWS Request ID: F75DC5496B071F7D, AWS Error Code: SignatureDoesNotMatch, AWS Error Message: The request signature we calculated does not match the signature you provided. Check your key and signing method., S3 Extended Request ID: XtRqjEuUmygswUxFUophRudYKbwi4OY4MK9QnYS4DMrH6JrHZXihUEC4mLZbPqz4
Exception in thread "main" Status Code: 403, AWS Request ID: F75DC5496B071F7D, AWS Error Code: SignatureDoesNotMatch, AWS Error Message: The request signature we calculated does not match the signature you provided. Check your key and signing method., S3 Extended Request ID: XtRqjEuUmygswUxFUophRudYKbwi4OY4MK9QnYS4DMrH6JrHZXihUEC4mLZbPqz4
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:538)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:283)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:168)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:2555)
at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1044)
at com.socialite.s3export.S3Export.parseDirectory(S3Export.java:89)
at com.socialite.s3export.S3Export.parseDirectory(S3Export.java:73)
at com.socialite.s3export.S3Export.parse(S3Export.java:48)
at com.socialite.s3export.S3Export.main(S3Export.java:122)

我确定我向 SDK 提供了正确的凭据。为了测试目的,我使用了之前程序中的相同凭据并且它起作用了。我可以创建存储桶,但无法在其中存储对象。在我的代码中,我使用 PutObjectRequest 来存储对象。

下面是我如何初始化我的 amazon S3 对象:

AmazonS3 s3 = new AmazonS3Client(new PropertiesCredentials(
S3Export.class .getResourceAsStream("AwsCredentials.properties")));

上传代码:

private void parseDirectory(File fin, File fdefault, String out)
throws FileNotFoundException {

System.out.println("processing .." + fin.getName());

File[] files = fin.listFiles();

PrintWriter pw = new PrintWriter(fdefault);

for (File f : files) {

String key = UUID.randomUUID().toString();

String name = "";

PutObjectRequest por = null;

if (f.isDirectory()) {

name = "d_" + f.getName() + ".properties";

File metadata = new File(out + name);

parseDirectory(f, metadata, out);

pw.println(key + "=" + name);

//upload to s3
por = new PutObjectRequest(this.bucketName, key, metadata);

} else {

name = f.getName();

pw.println(key + "=" + name);

por = new PutObjectRequest(this.bucketName, key, f);

}


this.amazonS3.putObject(por);
}
pw.close();
}

我的代码在这一行失败:this.amazonS3.putObject(por);

有人可以解释我的代码有什么问题吗?

最佳答案

我终于找到了问题的答案。事实是在初始化时,我传递了一个错误的存储桶名称,并且我使用了不同的名称来发出请求。就这样。

关于java - 无法使用 Java 在 Amazon S3 中上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9086222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com