如何从ASP.NET MVC5从Azure BLOB存储下载文件

时间:2018-05-29 05:33:45

标签: azure asp.net-mvc-5 azure-storage-blobs

enter image description here

我可以从Web应用程序中下载Azure Blob存储中的文件。

一旦我获得Azure Blob存储列表,就不会下载它。

输入下载blob时出错。

如果您能查看我的代码并让我知道问题是什么,我将不胜感激。

public string DownloadBlob()
    {
        CloudBlobContainer container = GetCloudBlobContainer();
        CloudBlockBlob blob = container.GetBlockBlobReference("myBlob");
        using (var fileStream = System.IO.File.OpenWrite(@"C:\BlobTest"))
        {
            blob.DownloadToStream(fileStream);
        }
        return "success!";
    }

1 个答案:

答案 0 :(得分:2)

我已经测试了您的代码,它可以在我的MVC Web应用程序中运行,如下所示。

    public ActionResult Download()
    {

        ContentResult contentResult = new ContentResult();
        contentResult.Content = DownloadBlob();
        return contentResult;
    }

    public static string DownloadBlob()
    {
        try
        {
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=leeliublob;AccountKey=O7xB6ebGq8e86XQSy2vkvSi/x/e9l9FhLqayXcbz1R+E0mIcJ5Wjkly1DsQPYY5dF2JrAVHtBozbJo29ZrrGJA==;EndpointSuffix=core.windows.net");
            CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();

            CloudBlobContainer container = cloudBlobClient.GetContainerReference("mycontainer");
            CloudBlockBlob blob = container.GetBlockBlobReference("4.PNG");
            using (var fileStream = System.IO.File.OpenWrite(@"C:\Test\BlobTest.PNG"))
            {
                blob.DownloadToStream(fileStream);
            }
            return "success!";
        }
        catch(Exception ex)
        {
            return ex.StackTrace;
        }


    }

我认为这是关于MVC应用程序权限的问题。

您的MVC应用程序可能使用IIS的虚拟帐户,如下所示,它可能无法访问您的C盘。 enter image description here

要解决这个问题,有两种方法:

  1. 请尝试下载到其他磁盘,例如" E"或" D"。

  2. 请添加用户组" Authenticated Users"到下面的文件或文件夹。

  3. enter image description here

    <强>更新

    我已将您的问题转载如下:

    enter image description here

    我们需要在C盘的根目录下创建一个文件夹,如下所示,因为您的Web应用程序没有C盘根目录的权限:

    enter image description here