如何在azure中上传文件后获取blob URL

如何在azure中上传文件后获取blob URL,azure,azure-storage-blobs,azure-web-roles,Azure,Azure Storage Blobs,Azure Web Roles,我正在尝试连接web和worker角色。所以我有一个页面,用户可以上传视频文件。文件很大,因此我无法使用查询发送文件。这就是为什么我试图将它们上传到Blob存储中,然后通过查询发送url。但是我不知道如何获取这个url 有人能帮我吗?假设您正在使用.Net存储客户端库通过创建CloudBlockBlob的实例将blob上载到blob存储中,您可以通过读取blob的属性来获取blob的URL 静态void BlobUrl() { var account=new CloudStorageAccoun

我正在尝试连接web和worker角色。所以我有一个页面,用户可以上传视频文件。文件很大,因此我无法使用查询发送文件。这就是为什么我试图将它们上传到Blob存储中,然后通过查询发送url。但是我不知道如何获取这个url


有人能帮我吗?

假设您正在使用.Net存储客户端库通过创建
CloudBlockBlob的实例将blob上载到blob存储中,您可以通过读取blob的属性来获取blob的URL

静态void BlobUrl()
{
var account=new CloudStorageAccount(new-StorageCredentials(accountName,accountKey),true);
var cloudBlobClient=account.CreateCloudBlobClient();
var container=cloudBlobClient.GetContainerReference(“容器名称”);
var blob=container.GetBlockBlobReference(“image.png”);
blob.UploadFromFile(“文件路径…);//上载文件。。。。
var blobUrl=blob.Uri.AbsoluteUri;
}

嘿,很抱歉,我不知道我是如何在回答中再次发布相同的评论的。请在下面找到我的正确答案,并详细解释此存储blob如何从blob获取url

//在web.config文件中添加连接字符串,以便在需要时轻松访问多个位置

<connectionStrings>

<add name="BlobStorageConnection" connectionString="DefaultEndpointsProtocol=https;AccountName=accName;AccountKey=xxxxxxxxxxxxxxxxxx YOU WILL FIND THIS in your AZURE ACCOUNT xxxxxxxxxx==;EndpointSuffix=core.windows.net"/>

通过这种方式,如果您有文件(或图像)名称,您可以获得文件的url。

从2020年起,完整的Javascript解决方案:

const{BlobServiceClient}=require(“@azure/storage blob”)
常数AZURE\u存储\u连接\u字符串=“”
异步函数main(){
//创建BlobServiceClient对象,该对象将用于创建容器客户端
const blobServiceClient=blobServiceClient.fromConnectionString(AZURE\存储\连接\字符串);
//确保您的容器已创建
const containerName='speechlab'
//获取对容器的引用
const containerClient=blobServiceClient.getContainerClient(containerName);
//为blob创建唯一的名称
const blobName='quickstart.txt';
//获取块blob客户端
const blockBlobClient=containerClient.getBlockBlobClient(blobName);
log('\n以blob:\n\t',blobName的形式加载到Azure存储);
//将数据上载到blob
常量数据='你好,世界!';
等待blockBlobClient.upload(数据、数据、长度);
log(“Blob已成功上载。请求ID:”);
log(“blobURL:,blockBlobClient.URL”)
}
main().then(()=>console.log('Done')).catch((ex)=>console.log(ex.message));

对于python用户,可以使用
blob\u client.url

不幸的是,docs.microsoft.com中没有对其进行记录

从azure.storage.blob导入BlobServiceClient
#获取您的连接字符串-查看文档
blob\u服务\u客户端=BlobServiceClient.from\u连接\u字符串(连接\u字符串)
container\u client=blob\u service\u client.get\u container\u client(存储\u容器\u名称)
您可以调用blob_client.url
blob\u client=container\u client.get\u blob\u client(“myblockblob”)
以open(“pleasedelete.txt”、“rb”)作为数据:
blob\u client.upload\u blob(数据,blob\u type=“BlockBlob”)
打印(blob_client.url)
会回来的
https://pleasedeleteblob.blob.core.windows.net/pleasedelete-blobcontainer/myblockblob

以下是V12方式。我不能保证我的变量名是准确的,但代码是有效的

protected BlobContainerClient AzureBlobContainer
{
  get
  {
    if (!isConfigurationLoaded) { throw new Exception("AzureCloud currently has no configuration loaded"); }
    if (_azureBlobContainer == null)
    {
      if (!string.IsNullOrEmpty(_configuration.StorageEndpointConnection))
      {

        BlobServiceClient blobClient = new BlobServiceClient(_configuration.StorageEndpointConnection);
        BlobContainerClient container = blobClient.GetBlobContainerClient(_configuration.StorageContainer);
        container.CreateIfNotExists();
        _azureBlobContainer = container;
      }
    }
    return _azureBlobContainer;
  }
}

public bool UploadFileToCloudStorage(string fileName, Stream fileStream)
{
  BlobClient cloudFile = AzureBlobContainer.GetBlobClient(fileName);
  cloudFile.DeleteIfExists();
  fileStream.Position = 0;
  cloudFile.Upload(fileStream);
  return true;
}

public BlobClient UploadFileToCloudStorageWithResults(string fileName, Stream fileStream)
{
  BlobClient cloudFile = AzureBlobContainer.GetBlobClient(fileName);
  cloudFile.DeleteIfExists();
  fileStream.Position = 0;
  cloudFile.Upload(fileStream);

  return cloudFile;
}

public Stream DownloadFileStreamFromCloudStorage(string fileName)
{
  BlobClient cloudFile = AzureBlobContainer.GetBlobClient(fileName);
  Stream fileStream = new MemoryStream();
  cloudFile.DownloadTo(fileStream);
  return fileStream;
}
当您使用更新的“Azure存储Blobs”包时,请使用下面的代码

            BlobClient blobClient = containerClient.GetBlobClient("lg.jpg");

            Console.WriteLine("Uploading to Blob storage as blob:\n\t {0}\n", containerClient.Uri);

            using FileStream uploadFileStream = File.OpenRead(fileName);

            if (uploadFileStream != null) 
              await blobClient.UploadAsync(uploadFileStream, true);

           var absoluteUrl= blobClient.Uri.AbsoluteUri;

你是什么意思:文件太大,所以我不能用查询发送文件?我说的是视频文件。你能不能输入一些代码来获取最近上传的blob(图像文件)的URL;DR:只需使用
cloudBlockBlob.Uri.AbsoluteUri
?(截至目前第12节)@devmiles.com…获取CloudBlob的一个实例。它有一个Uri属性(),你们是在其他地方找到了相同的答案,还是只是复制了Gaurav的答案?@nivs1978我不知道它是如何发布的。请查找有关从存储blob帐户获取文件url的正确详细说明。当我尝试在浏览器上访问图像时,我发现一个错误,此XML文件似乎没有任何与之关联的样式信息。文档树如下图所示。yeap!它没有文档记录,我是通过.Net文档了解它的!
            BlobClient blobClient = containerClient.GetBlobClient("lg.jpg");

            Console.WriteLine("Uploading to Blob storage as blob:\n\t {0}\n", containerClient.Uri);

            using FileStream uploadFileStream = File.OpenRead(fileName);

            if (uploadFileStream != null) 
              await blobClient.UploadAsync(uploadFileStream, true);

           var absoluteUrl= blobClient.Uri.AbsoluteUri;