【发布时间】:2015-01-26 01:49:18
【问题描述】:
我正在将文件从 Windows 系统上传到 Azure 存储 Blob
本地文件名可能包含在 blob 名称中无效的字符
我需要一种对这些名称进行编码的方法,以满足 MSDN 对 blob 存储名称提出的要求,如下所示
blob 名称必须符合以下命名规则:
- blob 名称可以包含任意字符组合。
- Blob 名称的长度必须至少为一个字符,并且长度不能超过 1,024 个字符。
- Blob 名称区分大小写。
- 必须正确转义保留的 URL 字符。
- 包含 blob 名称的路径段数不能超过 254。路径段是与名称对应的连续分隔符(例如,正斜杠“/”)之间的字符串 的虚拟目录。
上面的相关信息是“保留的URL字符必须正确转义。但是,使用什么方法是“标准”?
【问题讨论】:
-
几乎所有我的项目,我都使用 GUID 作为 blob 名称(带有其原始 extname),并将其原始名称映射到表、SQL 数据库或 blob 的元数据中。你考虑过这个解决方案吗?个人认为它比直接使用客户端文件名更好,因为它给了我们更多的灵活性。
-
对于另一个项目,我们这样做并且效果很好,但是这个项目与专用的缩减 ftp 服务器工作人员角色相关联,我需要保持名称完整,转义似乎是合适的在这种情况下
-
感谢您的澄清。所以这是另一种情况,请忽略我下面的“离题”评论。
-
您是使用存储客户端库还是编写了自己的代码以使用 REST API 进行上传?
-
如果您使用的是存储客户端库,那么我认为您无能为力。该库在内部进行 URL 编码,您将不得不忍受它。如果您对 blob 名称进行编码,然后将其发送到库,它将再次对其进行编码,因此您的 blob 名称将不正确。
标签: .net azure azure-functions azure-blob-storage