gpt4 book ai didi

java - 文件名中包含 Amazon S3 和西里尔字母

转载 作者:行者123 更新时间:2023-11-30 03:41:52 25 4
gpt4 key购买 nike

我在将包含西里尔字母的文件 (right_file_кириллица.csv) 上传到云时遇到问题。我的代码是:

ObjectMetadata meta = new ObjectMetadata();
meta.setContentEncoding("UTF-8");
PutObjectRequest por = new PutObjectRequest(s3Bucket, f.asPath(), new ByteArrayInputStream(bos.toString("UTF-8").getBytes(Charset.forName("UTF-8"))), meta);
PutObjectResult result = s3Client.putObject(por);

bos - 这是 ByteArrayOutputStream。这会导致异常:

com.amazonaws.services.s3.model.AmazonS3Exception: The request signature we calculated does not match the signature you provided. Check your key and signing method. (Service: Amazon S3; Status Code: 403; Error Code: SignatureDoesNotMatch; Request ID: A796905192C41ED5)
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:937)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:506)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:273)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3660)
at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1432)

我在所有可能的地方设置了编码 UTF-8。那么,有人知道如何解决这个问题吗?谢谢

最佳答案

此信息需要在 ContentType 中设置,而不是在 Content-Encoding 中设置:

ObjectMetadata meta = new ObjectMetadata();
meta.setContentType("text/html; charset=utf-8");

Content-Encoding 通常用于指示正​​文是否已被压缩(例如设置值 gzip 或 deflate)

关于java - 文件名中包含 Amazon S3 和西里尔字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26677161/

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