Dart/Flutter使用azblob上传Azure Blob遇InvalidMetadata错误求助
问题分析与解决方案
你完全用错了请求头:
x-ms-range是用来做范围请求的,格式要求是bytes=起始字节-结束字节(比如bytes=0-1023表示仅操作Blob的前1024字节),你把标签内容塞到这个头里,Azure服务器无法解析,所以返回InvalidMetadata错误。
正确设置Blob标签的方法
要给Blob设置标签,必须用x-ms-tags请求头,格式为键值对,多个标签用&分隔:
// 修正后的代码 Map<String, String> headers = { "x-ms-tags": "VIN=TEST1" }; await storage.putBlob('/$container/$key.txt', body: 'Halllooo', headers: headers);
额外注意事项
- 标签键不能以
x-ms-开头,也不能包含空格或控制字符 - 如果标签的键/值里有
&、=这类特殊字符,需要做URL编码(比如VIN=TEST&123要写成VIN=TEST%26123) - 如果你要设置的是Blob元数据(非可索引的自定义信息),需用
x-ms-meta-前缀,示例:Map<String, String> headers = { "x-ms-meta-VIN": "TEST1" }; await storage.putBlob('/$container/$key.txt', body: 'Halllooo', headers: headers);
内容的提问来源于stack exchange,提问作者Lukas Fürst
相关产品推荐
相关产品推荐

