0

ファイルを S3 バケットにアップロードしようとしています。Amazon 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 であると読んだので、問題はないはずです。

4

2 に答える 2

0

キーはURLに直接関連しているため、特定の文字(この場合は&)を適切にエスケープする必要があります。

一般的なガイドライン:

バケットとキーの命名

バケットには任意の英数字で名前を付けることができますが、いくつかの簡単な命名規則に従うと、規則.s3.amazonaws.comを使用してバケットを参照できるようになります。

  1. 3〜63文字を使用します。
  2. 小文字(少なくとも1つ)、数字、「。」のみを使用してください。と '-'。バケット名を「。」で開始または終了しないでください。'。'の後にまたは先行しないでください。とともに '-'。キーには、適切にエンコードされたUTF-8文字で名前を付けることができます。
  3. リテラルの「+」文字は常にURLエンコードする必要があります。
于 2013-03-08T15:12:33.843 に答える
0

解決しました。無効な文字を含むメタデータを設定していました。オブジェクトのキー値には何も着用されていませんでした。しかし、メタデータには注意が必要でした。

于 2013-03-08T18:53:49.500 に答える