タスク
元のファイル名でファイルをアップロードし、ファイル名をにAzure Blob Storage
割り当てますmeta-data
CloudBlob
問題
これらの文字は使用できませんが、名前meta-data
として使用できます。blob
š Š ñ Ñ ç Ç ÿ Ÿ ž Ž Ð œ Œ « » éèëêð ÉÈËÊ àâä ÀÁÂÃÄÅ àáâãäå ÙÚÛÜ ùúûüµ òóôõöø ÒÓÔÕÖØ ìíîï ÌÍÎÏ
質問
- これらの文字を?に保存する方法はあり
meta-data
ますか?この例外の原因となる設定が欠落していますか? - これらの文字のほとんどは、一部の言語では標準のグリフですが、それをどのように処理するのでしょうか。
- この問題についてアドバイスする利用可能なドキュメントはありますか?
blob
命名規則を見つけましmeta-data
たが、データ自体については何もありません!
コード
var dirtyFileName = file.FileName;
var normalizedFileName = file.FileName.CleanOffDiacriticAndNonASCII();
// Blob name accepts almost characters that are acceptable as filenames in Windows
var blob = container.GetBlobReference(dirtyFileName);
//Upload content to the blob, which will create the blob if it does not already exist.
blob.Metadata["FileName"] = normalizedFileName;
blob.Attributes.Properties.ContentType = file.ContentType;
// ERROR: Occurs here!
blob.UploadFromStream(file.InputStream);
blob.SetMetadata();
blob.SetProperties();
エラー
参考文献
- コンテナ、ブロブ、メタデータの命名と参照
- Azure BLOBストレージで他の言語をサポートするにはどうすればよいですか?
- .NETの文字列から発音区別符号(アクセント)を削除するにはどうすればよいですか?
- Azure CloudBlob SetMetadataは、「指定されたメタデータが無効です。許可されていない文字が含まれています。」で失敗します。
- C#での文字の置換(ascii)
回避策
ファイル名の不正な文字は氷山の一角に過ぎず、この質問の目的のためにのみ拡大されています。全体像は、を使用してこれらのファイルにインデックスを付けることです。Lucene.net
そのため、に多くのファイルをmeta-data
保存する必要がありblob
ます。すべてを個別にデータベースに保存することを提案しないでください。これまで、発音区別符号を含むファイルを1つしか見つけられなかったのは幸運でした。
そのため、現時点ではmeta-data
、回避策としてファイル名をに保存しないように努めています。