如何解决在Azure BlobClient上设置ContentType而不擦除诸如ContentHash之类的属性
您可以在Upload上设置ContentType,如果您搞砸了,可以在之后for example
进行设置。所以说我想更新ContentType:
public async Task FixContentTypeAsync(BlobClient file,string mimetype)
{
await file.SetHttpHeadersAsync(new BlobHttpHeaders
{
ContentType = mimetype
});
}
问题如果再次获取文件,结果证明我已擦除ContentHash
解决方法重新设置所有其他可用的BlobHttpHeaders:
public async Task FixContentTypeAsync(BlobClient file,string mimetype)
{
var props = await file.GetPropertiesAsync();
var before = props.Value;
await file.SetHttpHeadersAsync(new BlobHttpHeaders
{
ContentType = mimetype,CacheControl = before.CacheControl,ContentDisposition = before.ContentDisposition,ContentEncoding = before.ContentEncoding,ContentHash = before.ContentHash,ContentLanguage = before.ContentLanguage,});
}
我本质上想做一个JsonPatch并自己编辑此属性,而不必担心可能会擦除我不知道的属性,略微担心SetHttpHeadersAsync实现将来会改变,而我最终会擦除以前版本中没有的其他一些元数据。
有没有“更安全”的方法来做到这一点?如果没有,这很好,这很可怕,它使我可以编程方式擦除我不是想触摸的一堆元数据。
编辑:我在上传时检查了设置ContentEncoding,如果我使用代码段1则不会被擦除
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。