![](/img/trans.png)
[英]powershell upload blob to azure blob storage set content type
[英]Azure Blob Storage - Content Type Setting on Download and Upload
我正在嘗試使用 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);
}
文檔已成功上傳到 Blob 存儲。 在查看 Azure 存儲資源管理器時,我可以看到內容類型也已正確設置。 但是,當我嘗試通過瀏覽器 (chrome) 訪問此文檔(使用文檔 URL)時,它將文件下載為未知文件。
我通過 Azure 存儲資源管理器上傳一個 word 文檔來嘗試相同的操作。 該文件在通過瀏覽器下載時被下載為 word 文檔。
知道出了什么問題嗎?
如下圖所示, Content-Type
標頭作為一個屬性存儲在Blob Properties
中,因此它將被設置到下載響應的標頭中,然后在瀏覽器下載時將其識別為 word 文件。
因此,當您上傳 word 文件時,需要通過BlobBaseClient.SetHttpHeaders(BlobHttpHeaders, BlobRequestConditions, CancellationToken) Method
或BlobBaseClient.SetHttpHeadersAsync(BlobHttpHeaders, BlobRequestConditions, CancellationToken) Method
為 blob 設置ContentType
屬性。
然后在您的服務器應用程序上自己編寫下載響應標頭的Content-Type
標頭,其值為以下contentType
。
Response<BlobProperties> response = await blobClient.GetPropertiesAsync();
var contentType = response.Value.ContentType
或者來自帶有 sas 令牌的 blob url 的下載響應,其標頭默認包含ContentType
屬性作為Content-Type
標頭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.