簡體   English   中英

文件名中的Amazon S3和西里爾字母

[英]Amazon S3 and cyrillic letters in file name

我將文件上傳到包含西里爾字母(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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM