如何将 blob 上传到 C# 函数中的现有容器
Posted
技术标签:
【中文标题】如何将 blob 上传到 C# 函数中的现有容器【英文标题】:How can I upload a blob to an existing container in C# Function 【发布时间】:2020-11-18 18:49:13 【问题描述】:我正在学习如何将存储 blob 与 Azure Functions 一起使用,我遵循了以下文档:https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-dotnet
// Create a BlobServiceClient object which will be used to create a container client
BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);
// Create the container and return a container client object
BlobContainerClient containerClient = await blobServiceClient.CreateBlobContainerAsync("<containername>");
// Get a reference to a blob
BlobClient blobClient = containerClient.GetBlobClient("<blobname>");
// Open the file and upload its data
using FileStream uploadFileStream = File.OpenRead("<localfilepath>");
await blobClient.UploadAsync(uploadFileStream, true);
uploadFileStream.Close();
教程中的这段代码只是展示了如何在新容器中上传 blob,但我想上传到现有容器。我能做些什么?谢谢。
【问题讨论】:
使用blobServiceClient.GetContainerReference
。
我试过了,但它说 blobServiceClient 不包含 GetContainerReference 的定义。我是否缺少 using 指令?我需要添加什么指令?
【参考方案1】:
使用GetBlobContainerClient
。您获得的其他遮阳篷均用于v11
。
var serviceClient = new BlobServiceClient(connectionString);
var containerClient = serviceClient.GetBlobContainerClient(containerName);
【讨论】:
非常感谢,这正是我想要的。【参考方案2】:试试这个方法
public static async Task<bool> UploadImageAsyncPDF(string imagepath, string originalUploadedFileName)
string filefullpath = string.Empty;
bool Success = false;
try
if (!String.IsNullOrEmpty(SecretString) && !String.IsNullOrEmpty(ContainerName))
using (Stream filestream = System.IO.File.OpenRead(imagepath))
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(SecretString);
CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference(ContainerName);
cloudBlobContainer.CreateIfNotExists();
CloudBlockBlob cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference(originalUploadedFileName);
cloudBlockBlob.Properties.ContentType = "application/pdf";
if (!cloudBlockBlob.Exists())
await cloudBlockBlob.UploadFromStreamAsync(filestream);
filefullpath = cloudBlockBlob.Uri.ToString();
Success = true;
else
filefullpath = "AlreadyExists";
Success = true;
catch (Exception ex)
Logger.WriteLog("Exception in UploadImageAsyncPDF:" + ex);
Success = false;
return Success;
【讨论】:
谢谢。我可以在没有 CloudBlobContainer 的情况下做到这一点吗?如果可能的话,只使用 BlobContainerClient? @DorisLv 当然!使用 BlobServiceClient 和 GetBlobContainerClient以上是关于如何将 blob 上传到 C# 函数中的现有容器的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有文件路径的情况下将文件上传到 Azure Blob 存储容器的根目录
如何将静态文件添加/上传到 Azure Blob 存储容器的特定路径