首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure Blob存储-下载和上载时的内容类型设置

问Azure Blob存储-下载和上载时的内容类型设置
EN

Stack Overflow用户
提问于 2019-11-27 21:18:34
回答 1查看 1.3K关注 0票数 0

我正在尝试使用C#将word文档上传到blob存储。代码片段如下:

代码语言:javascript
复制
var blobServiceClient = new BlobServiceClient(connectionString);
var containerClient = blobServiceClient.GetBlobContainerClient(container);
containerClient.CreateIfNotExists(PublicAccessType.None);
var blobClient = containerClient.GetBlobClient(documentName);
using (var memoryStream = new MemoryStream({Binary of the File}))
{
    var headers = new BlobHttpHeaders() { ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document" };
    await blobClient.UploadAsync(memoryStream, httpHeaders: headers).ConfigureAwait(false);
}

文档成功上载到Blob存储。在通过Azure存储资源管理器查看时,我可以看到内容类型也设置正确。但是,当我试图通过浏览器(chrome)访问这个文档(使用文档URL)时,它将该文件作为未知文件下载。

我尝试了同样的方法,通过Azure Storage Explorer上传word文档。此文件在通过浏览器下载时以word文档的形式下载。

你知道哪里出问题了吗?

EN

回答 1

Stack Overflow用户

发布于 2019-11-29 21:26:11

如下图所示,Content-Type标头作为属性存储在Blob Properties中,因此它将被设置到下载响应的标头中,然后在浏览器下载时被识别为word文件。

​

​

因此,在上载word文件时,有必要通过BlobBaseClient.SetHttpHeaders(BlobHttpHeaders, BlobRequestConditions, CancellationToken) Method或BlobBaseClient.SetHttpHeadersAsync(BlobHttpHeaders, BlobRequestConditions, CancellationToken) Method为blob设置ContentType属性。

然后自己在服务器应用程序上使用下面的contentType值编写下载响应标头的Content-Type标头。

代码语言:javascript
复制
Response<BlobProperties> response = await blobClient.GetPropertiesAsync();
var contentType = response.Value.ContentType

或者来自具有SAS令牌的blob的下载响应,该令牌的报头默认包括作为Content-Type报头的ContentType属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59071148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档