从blob存储上传和检索文件

时间:2015-04-22 05:42:40

标签: azure image-uploading

我想在azure blob存储中上传文件,并在我自己的应用程序中检索该文件。

我的代码:

protected void btnUploadtoCloud_Click(object sender, EventArgs e)
{
         UploadFile();
}
public string UploadFile()
{
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString"));
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer blobContainer = blobClient.GetContainerReference("vest");

        blobContainer.CreateIfNotExist();
        BlobContainerPermissions containerPermissions = new BlobContainerPermissions();

        containerPermissions.PublicAccess = BlobContainerPublicAccessType.Container;

        blobContainer.SetPermissions(containerPermissions);


        CloudBlob blobText = blobContainer.GetBlobReference(fupPicture.FileName);
        blobText.Properties.ContentType = fupPicture.PostedFile.ContentType;
        string blobURL = blobText.Uri.ToString();
        blobText.UploadFromStream(fupPicture.FileContent);
        imgTest.ImageUrl = blobURL;
        return blobURL;
 }

但我的问题是UploadFile的第一行。我包含图片,因为我也想显示我的参考号。

blob

为什么RoleEnvironment出错。我可能会遗漏一些事情要包括在内。

注意:我有窗口azure帐户,我可以轻松部署其他网站。

修改

Gaurav建议之后我尝试:

string cnn = "<add name=\"testconnectionstring\" DefaultEndpointsProtocol=\"http;AccountName=mystorage;AccountKey=A9Jlajksdh69szut9zOfsxWMD/qLaP3Gy6ID9mIarNmCDasdhlyNlAR9wV0NGjqJUZeM4x6x5bTumLv+1nC51clHDl5GTYYPA==" + " />";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(cnn);

但无法正常工作我得错误组合无效。

1 个答案:

答案 0 :(得分:1)

您收到此错误的原因是RoleEnvironment仅在您的代码在本地计算机模拟器或云端的云服务(Web角色)上下文中运行时才可用。

由于它是一个Web应用程序,我猜您将在Azure网站中部署它,您只需使用AppSettingsReader从Web.Config文件中读取即可。类似的东西:

        var rdr = new AppSettingsReader();
        string connectionString = (string) rdr.GetValue("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", typeof(String));
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);

如果您的应用程序连接到云存储帐户,您的连接字符串将类似于:

  

DefaultEndpointsProtocol = https和帐户名=您的帐户名称; AccountKey =您的帐户密钥

要连接到本地存储模拟器,您的连接字符串将如下所示:

  

UseDevelopmentStorage =真