我正在尝试将文件上传到S3存储桶。我使用的是亚马逊SDK AWSSDK。
几乎每个文件都被上传,但有些文件名有混合语言和字符,如; “ms.video.downloader / music / youtube /дашаастафьева& nikita - синееплатье.mp3”
我的代码是
var request = new PutObjectRequest();
try {
using (var fileStream = new FileStream(file.LocalPath, FileMode.Open)) {
request.WithBucketName(_bucketName)
.WithCannedACL(S3CannedACL.PublicRead).WithMetaData(metadata)
.WithKey(file.S3Path).InputStream = fileStream;
client.PutObject(request);
}
} catch (Exception) {
}
和
file.S3Path值包含“ms.video.downloader / music / youtube /дашаастафьева& nikita - синееплатье.mp3”,此键导致异常。
我该如何处理?我读到Key值是unicode,所以应该没有问题。
答案 0 :(得分:0)
由于密钥直接与网址相关,因此某些字符(以及您的情况)需要正确转义。
一般准则:
<强> Naming Buckets and Keys 强>
虽然可以使用任何字母数字字符命名存储桶, 遵循一些简单的命名规则将确保您可以参考 你的桶使用约定.s3.amazonaws.com。
- 使用3到63个字符。
- 仅使用小写字母(至少一个),数字,'。'和' - '。不要使用'。'开始或结束存储桶名称。并且不要跟随或 先于'。'用' - '。键可以使用任何正确编码命名 UTF-8字符。
- 字面'+'字符应始终为URL编码。
醇>
答案 1 :(得分:0)
解决了它。我用无效字符设置元数据。对象的键值没有任何问题。但元数据很棘手。