如何将blob上传到C#函数中的现有容器
我正在学习如何将存储blob与Azure功能结合使用,我遵循了以下文档:如何将blob上传到C#函数中的现有容器,c#,function,blob,C#,Function,Blob,我正在学习如何将存储blob与Azure功能结合使用,我遵循了以下文档: //创建将用于创建容器客户端的BlobServiceClient对象 BlobServiceClient BlobServiceClient=新BlobServiceClient(connectionString); //创建容器并返回容器客户端对象 BlobContainerClient containerClient=等待blobServiceClient.CreateBlobContainerSync(“”); //
//创建将用于创建容器客户端的BlobServiceClient对象
BlobServiceClient BlobServiceClient=新BlobServiceClient(connectionString);
//创建容器并返回容器客户端对象
BlobContainerClient containerClient=等待blobServiceClient.CreateBlobContainerSync(“”);
//获取对blob的引用
BlobClient BlobClient=containerClient.GetBlobClient(“”);
//打开文件并上载其数据
使用FileStream uploadFileStream=File.OpenRead(“”);
等待blobClient.UploadAsync(uploadFileStream,true);
uploadFileStream.Close();
教程中的这段代码只是展示了如何在新容器中上传blob,但我想上传到现有容器中。我能做什么?谢谢。试试这边
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;
}
公共静态异步任务上载ImageAsyncPDF(字符串imagepath,字符串originalUploadedFileName)
{
string filefullpath=string.Empty;
布尔成功=假;
尝试
{
如果(!String.IsNullOrEmpty(SecretString)和&!String.IsNullOrEmpty(ContainerName))
使用(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.getblockblobbreference(originalUploadedFileName);
cloudBlockBlob.Properties.ContentType=“application/pdf”;
如果(!cloudBlockBlob.Exists())
{
等待cloudBlockBlob.UploadFromStreamAsync(文件流);
filefullpath=cloudBlockBlob.Uri.ToString();
成功=真实;
}
其他的
{
filefullpath=“AlreadyExists”;
成功=真实;
}
}
}
捕获(例外情况除外)
{
WriteLog(“UploadImageAsyncPDF中的异常:“+ex”);
成功=错误;
}
回归成功;
}
使用GetBlobContainerClient
。您获得的其他awnsers均适用于v11
var-serviceClient=newblobserviceclient(connectionString);
var containerClient=serviceClient.GetBlobContainerClient(containerName);
使用blobServiceClient.GetContainerReference
。我尝试过,但它说blobServiceClient不包含GetContainerReference的定义。我是否缺少使用指令?我需要补充什么指令?谢谢。没有CloudBlobContainer我能做到吗?如果可能的话,就使用BlobContainerClient?@DorisLv当然可以!使用BlobServiceClient和GetBlobContainerClient非常感谢,这正是我想要的。
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;
}