gpt4 book ai didi

azure - 将元数据添加到 CloudBlob 时出现无效字符异常

转载 作者:行者123 更新时间:2023-12-03 21:24:07 27 4
gpt4 key购买 nike

任务

使用原始文件名将文件上传到 Azure Blob Storage,并将文件名作为 meta-data 分配给 CloudBlob

问题

元数据中不允许使用这些字符,但可以接受作为blob名称:

š Š ñ Ñ ç Ç ÿ Ÿ ž Ž Ð œ Œ « » éèëêð ÉÈËÊ àâä ÀÁÂÃÄÅ àáâãäå ÙÚÛÜ ùúûüµ òóôõöø ÒÓÔÕÖØ ìíîï ÌÍÎÏ

问题

  • 有没有办法将这些字符存储在元数据中?我们是否缺少一些导致此异常的设置?
  • 这些字符大多数是某些语言的标准字形,那么如何处理呢?
  • 是否有任何文档可以针对此问题提供建议?我找到了 blobmeta-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();

错误

Exception

引用文献

<小时/>

解决方法

文件名中的非法字符只是冰山一角,仅为了解决此问题而被放大!更大的图景是我们使用Lucene.net索引这些文件。因此需要将大量元数据存储在blob上。 请不要建议将其全部单独存储在数据库中,只是不要!到目前为止,我们很幸运只遇到了一个带有变音符号的文件!

因此,目前我们正在努力避免将文件名保存在元数据中作为解决方法!

最佳答案

刚刚收到 azure-sdk-for-net team on GitHub 的确认那只是ASCII字符作为 blob 元数据 中的数据有效。

joeg commented:
The supported characters in the blob metadata must be ASCII characters. To work aroundthis you can either escape the string ( percent encode), base64 encode etc.

Source on GitHub

因此,作为解决方法,可以:

  • 转义字符串(百分比编码)、base64 编码等,如 joeg 的建议
  • 使用我在 other answer 中提到的技术.

关于azure - 将元数据添加到 CloudBlob 时出现无效字符异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14899461/

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