代码之家  ›  专栏  ›  技术社区  ›  benjiiiii

从Azure Blob存储下载图像

  •  1
  • benjiiiii  · 技术社区  · 6 年前

    我正在编写一个程序,可以从我们的Azure存储容器的指定文件路径下载图像。

    我已经从在线找到的代码中整合了以下功能,然后删除了错误。但是,最后的错误我无法消除。

    完整代码如下:

    using System;
    using System.Windows.Forms;
    using Microsoft.WindowsAzure.Storage;
    
    using Microsoft.WindowsAzure.Storage.Blob;
    using System.IO;
    namespace WarehousePhotoProgram
    {
        public partial class Form1 : Form
        {
            string storageConnectionString = Environment.GetEnvironmentVariable("storageconnectionstring");
    
        public Form1()
    
    
           {
                InitializeComponent();
            }
    
            private void DownloadFileFromBlob(string fileName, string containerName)
            {
                CloudStorageAccount account = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(storageConnectionString));
                CloudBlobClient blobClient = account.CreateCloudBlobClient();
                CloudBlobContainer container = blobClient.GetContainerReference(containerName);
                CloudBlob blob = container.GetBlobReference(fileName);
                MemoryStream memStream = new MemoryStream();
                blob.DownloadToStream(memStream);
                Response.ContentType = blob.Properties.ContentType;
                Response.AddHeader("Content-Disposition", "Attachment; filename=" + fileName.ToString());
                Response.AddHeader("Content-Length", blob.Properties.Length.ToString());
                Response.BinaryWrite(memStream.ToArray());
    
            }
        }
       }
    

    代码当前在上出错 RoleEnvironment 如果说命名空间不存在,是否缺少程序集引用?或者我需要进口另一个 using .第二个错误出现在 Result. 再次说明 Response 不存在。

    这也是从blobstorage下载图像时采用的最佳方法,还是应该采用另一种方法?

    编辑:我解决了 角色环境 在给定答案的帮助下出错。现在尝试确定代码的响应部分也需要更改什么。

            public Form1()
        {
            InitializeComponent();
            //_storageAccount = CloudStorageAccount.Parse(storageConnectionString);
    
            DownloadFileFromBlob("029000/1.png", "warehouseimages", "Desktop");
        }
    
        private void DownloadFileFromBlob(string fileName, string containerName, string localFilePath)
        {
            CloudStorageAccount account = CloudStorageAccount.Parse(storageConnectionString);
            CloudBlobClient blobClient = account.CreateCloudBlobClient();
            CloudBlobContainer container = blobClient.GetContainerReference(containerName);
            CloudBlob blob = container.GetBlobReference(fileName);
            using (var fileStream = System.IO.File.OpenWrite(localFilePath))
            {
                blob.DownloadToStream(fileStream);
                MessageBox.Show("SUCCESS");
            }
        }
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Lee Liu    6 年前

    如果要将图像下载到本地磁盘,可以按以下方式修改代码:

        /// <summary>
        /// Download File From Blob
        /// </summary>
        /// <param name="fileName">For example: image.PNG</param>
        /// <param name="containerName">container name of blob</param>
        /// <param name="localFilePath">For example: @"C:\Test\BlobTest.PNG"</param>
        private void DownloadFileFromBlob(string fileName, string containerName, string localFilePath)
        {
            CloudStorageAccount account = CloudStorageAccount.Parse("Your connection string");
            CloudBlobClient blobClient = account.CreateCloudBlobClient();
            CloudBlobContainer container = blobClient.GetContainerReference(containerName);
            CloudBlob blob = container.GetBlobReference(fileName);
            using (var fileStream = System.IO.File.OpenWrite(localFilePath))
            {
                blob.DownloadToStream(fileStream);
            }
        }
    
        2
  •  2
  •   Martin Brandl    6 年前

    Roleenvironment类是Microsoft.WindowsAzure.ServiceRuntime命名空间的一部分,我从旧的经典云服务中了解到它。

    你应该使用 配置管理器 以检索您的设置。

    参见 Configuration in ASP.NET Core 或者,如果您使用.NET完整框架,请阅读有关它的更多信息。 here .