我正在尝试设置我上传到Blob服务的缩略图的属性。
CloudBlockBlob blockBlob = container.GetBlockBlobReference(Guid.NewGuid().ToString().Replace("-", "") + ".jpg");
bytes = thumbnailStream.ToArray();
await blockBlob.UploadFromByteArrayAsync(bytes, 0, bytes.Length);
blockBlob.Properties.ContentType = "image/jpeg";
blockBlob.Properties.CacheControl = "public, max-age=172800";
await blockBlob.SetPropertiesAsync();
return blockBlob.Uri.ToString();
我在浏览器中收到的标题如下:
Content-Length:0
Date:Sun, 07 Feb 2016 11:51:11 GMT
Server:Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id:5f77d341-0001-00ef-759d-61c590000000
x-ms-version:2009-09-19
我做错了什么还是错误?
答案 0 :(得分:2)
你既没有做错也没有错。基本上这些是Set Blob Properties
操作的响应头,在执行以下代码行时执行:
await blockBlob.SetPropertiesAsync();
我还注意到您的代码不是最佳的,可以改进。基本上,您正在进行2次网络操作 - 首先上传blob,然后设置第二次以设置blob的属性。只需更改几行代码即可在单个操作中组合它们:
CloudBlockBlob blockBlob = container.GetBlockBlobReference(Guid.NewGuid().ToString().Replace("-", "") + ".jpg");
bytes = thumbnailStream.ToArray();
blockBlob.Properties.ContentType = "image/jpeg";
blockBlob.Properties.CacheControl = "public, max-age=172800";
await blockBlob.UploadFromByteArrayAsync(bytes, 0, bytes.Length);
return blockBlob.Uri.ToString();
以上代码行不仅会上传blob,还会在单个网络调用中设置它的属性。同样在这种情况下,如果您查看响应标头,您将看到blob的内容长度和其他blob属性被返回。