gpt4 book ai didi

java - 上传到 Amazon S3 时命名文件

转载 作者:行者123 更新时间:2023-11-29 05:57:35 25 4
gpt4 key购买 nike

我正在尝试将文件上传到 Amazon S3,没什么特别的。我已经设法进行了实际的上传,并且文件上传成功。剩下的唯一问题是我无法更改 S3 中文件的名称。似乎默认情况下,文件名被设置为与 key 相同。可能是我将 key 作为参数发送,而我应该发送文件名。但是,我尝试更改周围的参数并且出现错误。

下面请找到我正在使用的代码:

Bucket bucket = client.createBucket("testBucket", Region.EU_Ireland);

List<PartETag> partTags = new ArrayList<>();

InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(
bucket.getName(), secretAmazonKey);

InitiateMultipartUploadResult result = client
.initiateMultipartUpload(request);
File file = new File(filePath);
long contentLength = file.length();
long partSize = 8 * 1024 * 1024;

try {
// Uploading the file, part by part.
long filePosition = 0;

for (int i = 1; filePosition < contentLength; i++) {
// Last part can be less than 8 MB therefore the partSize needs
// to be adjusted accordingly
partSize = Math.min(partSize, (contentLength - filePosition));

// Creating the request for a part upload
UploadPartRequest uploadRequest = new UploadPartRequest()
.withBucketName(bucket.getName()).withKey(secretAmazonKey)
.withUploadId(result.getUploadId()).withPartNumber(i)
.withFileOffset(filePosition).withFile(file)
.withPartSize(partSize);

// Upload part and add response to the result list.
partTags.add(client.uploadPart(uploadRequest).getPartETag());

filePosition += partSize;
}
}

catch (Exception e) {
client.abortMultipartUpload(new AbortMultipartUploadRequest(bucket
.getName(), secretAmazonKey, result.getUploadId()));
}

CompleteMultipartUploadRequest compRequest = new CompleteMultipartUploadRequest(
bucket.getName(), secretAmazonKey, result.getUploadId(), partTags);

client.completeMultipartUpload(compRequest);

非常感谢任何帮助。

非常感谢:)

最佳答案

上传请求中的 key 实际上是您的对象(文件) key (名称),而不是您的 AWS key 。每当您实例化您的 client 实例时,这就是您指定 AWS 凭证的时间。

您能否更具体地说明执行此操作时遇到的错误?

关于java - 上传到 Amazon S3 时命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11471359/

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