首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >正在从Azure Blob存储下载图像

正在从Azure Blob存储下载图像
EN

Stack Overflow用户
提问于 2018-06-12 17:19:53
回答 1查看 5.4K关注 0票数 1

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

我已经将在线找到的代码中的以下函数组合在一起,然后删除错误。然而,最后的错误我无法摆脱。

完整代码如下:

代码语言:javascript
复制
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下载图片的最好方法吗?还是我应该采取另一种方法?

编辑:我在给定答案的帮助下解决了RoleEnvironment错误。现在正在尝试确定代码的响应部分也需要更改哪些内容。

代码语言:javascript
复制
        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");
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-12 17:58:32

如果您想要将镜像下载到本地磁盘,您的代码可以修改如下:

代码语言:javascript
复制
    /// <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);
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50813547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档