将 word 文档上传到 Azure 存储时出错

Posted

技术标签:

【中文标题】将 word 文档上传到 Azure 存储时出错【英文标题】:getting an error while uploading word document to azure storage 【发布时间】:2020-11-17 02:59:12 【问题描述】:

我正在尝试使用以下代码将 word 文档与 blob 一起上传到 azure 云存储中

 var fileName = $"designInput.ProjectNumber-projectPhaseData.Name-BOD.docx";
 var builder = new BasisOfDesignBuilder(UpdatedDesignProject);
 var director = new BasisOfDesignDirector(builder);
 director.BuildBasisOfDesign();
 var document = builder.GetWordDocumentBytes(); // this will give byte array 

 var azureStorageAccountName = Startup.Configuration["AzureStorage:AccountName"]; // 'accountname like storageprod01'
 var azureStorageConnectionString = Startup.Configuration["AzureStorage:ConnectionString"]; // url like DefaultEndpointsProtocol=https;AccountName=storageprod01;AccountKey=abcbbc;EndpointSuffix=core.windows.net

 BlobContainerClient azureStorageContainer = new BlobContainerClient(azureStorageConnectionString, azureStorageAccountName);
 BlobClient blob = azureStorageContainer.GetBlobClient(fileName);
 using var memoryStream = new MemoryStream(document, false);
 blob.Upload(memoryStream);

在这一行出现错误blob.Upload(memoryStream);

错误是

指定的容器不存在

有人知道我为什么会收到此错误,或者我缺少与 azure 存储帐户相关的内容吗?

提前致谢

【问题讨论】:

谁能告诉我我在哪里失踪 BlobContainerClient 需要一个容器名称,而不是帐户名称。 @Crowcoder 感谢您的建议,我需要在这里使用 blob 容器 uri 来上传 【参考方案1】:

首先您将 accountName 的名称作为容器的名称传递给构造函数。(https://docs.microsoft.com/en-us/dotnet/api/azure.storage.blobs.blobcontainerclient.-ctor?view=azure-dotnet#Azure_Storage_Blobs_BlobContainerClient__ctor_System_Uri_Azure_Storage_StorageSharedKeyCredential_Azure_Storage_Blobs_BlobClientOptions_)

其次,您必须在创建 blob 之前创建容器。

 BlobContainerClient azureStorageContainer = new BlobContainerClient(azureStorageConnectionString, containerName);
 azureStorageContainer.CreateIfNotExists();
 BlobClient blob = azureStorageContainer.GetBlobClient(fileName);
 using var memoryStream = new MemoryStream(document, false);
 blob.Upload(memoryStream);

【讨论】:

感谢输入,我需要在这里使用 blobContainer URI 来存储帐户 没有必要,使用连接字符串,您已经拥有连接到 blobstorage 所需的所有数据。

以上是关于将 word 文档上传到 Azure 存储时出错的主要内容,如果未能解决你的问题,请参考以下文章

直接从前端将数据上传到 Azure Blob 存储时的安全问题

通过上传Word文档造成存储型XSS:案例研究

如何在 Azure Pipeline 上使用 Terraform 将文件上传到 Azure 存储?

通过直接 URL 浏览时上传到 Azure Blob 存储的图像不可用

试图从 azure blob 下载 word 文档

将文件上传到 Azure Blob 存储时没有触发事件网格事件——为啥?