当前位置: 首页 > 知识库问答 >
问题:

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

穆飞龙
2023-03-14

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

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);
}

你知道出什么问题了吗?

共有1个答案

夏弘文
2023-03-14

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

因此,上传word文件时,有必要通过blobbaseClient.sethttpHeaders(BlobHttpHeaders,BlobRequestConditions,CancellationToken)方法blobbaseClient.sethttpHeadersSasync(BlobHttpHeaders,BlobRequestConditions,CancellationToken)方法为blob设置ContentType属性。

然后在您的服务器应用程序上使用下面的contenttype值编写下载响应的标题的content-type标题。

Response<BlobProperties> response = await blobClient.GetPropertiesAsync();
var contentType = response.Value.ContentType

或者来自带有sas令牌的blob url的下载响应,标头默认包括ContentType属性作为Content-Type标头。

 类似资料:
  • 我正在使用Azure Blob存储客户端库上传一个静态站点。 这是工作的,但HTML文件是下载,而不是显示。这是因为内容类型错误:。

  • 可从PlayStation®Store购买游戏、下载游戏最新的免费体验版或宣传影片。 若要使用(PS Store),需先注册PlayStation®Network账号。即使未使用PS Vita注册PlayStation®Network也可阅览PlayStation®Store。下载内容时需先注册,请遵循显示的画面注册。 PlayStation®Network和PlayStation®Store的提

  • 那是外部存储代码,但我想保存在Android手机的内部存储。

  • 我已经阅读了MS提供的大多数文档,可以将文件/图像上传到Blob存储。已经两天了,我卡住了。我没有找到一个合适的方法来上传内容类型正确的图片。文件/图像已上载,但上载到BLOB存储后的内容类型更改为“应用程序/八位字节流”。我希望它是'image/png'或'image/jpg'等图像。 有一些C#代码示例,但它们并不有用。我在试node。js 使用的SDK库:@azure/storage blo

  • 我让activestorage在LocalHost上使用我的Rails5.2应用程序。 null 服务器设置如下: Nginx在计算机调用上反转代理 运行的另一台计算机上的Apache 乘客 我可以在rails编写的日志文件中看到,第二个请求的响应实际上相当快: