从 blob 存储上传和检索文件
Upload and retrieve file from blob storage
我想在 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.I 包含图像的第一行,因为我也想显示我的 ref dll。
.
为什么在 RoleEnvironment
中出错。我可以遗漏一些内容吗?
注意:我有 window azure 帐户,我可以轻松部署其他站点。
编辑
根据 Gaurav 的建议,我尝试了:
string cnn = "<add name=\"testconnectionstring\" DefaultEndpointsProtocol=\"http;AccountName=mystorage;AccountKey=A9Jlajksdh69szut9zOfsxWMD/qLaP3Gy6ID9mIarNmCDasdhlyNlAR9wV0NGjqJUZeM4x6x5bTumLv+1nC51clHDl5GTYYPA==" + " />";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(cnn);
但无法工作我收到错误无效组合。
您收到此错误的原因是因为 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;AccountName=your-account-name;AccountKey=your-account-key
要连接到本地存储模拟器,您的连接字符串应如下所示:
UseDevelopmentStorage=true
我想在 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.I 包含图像的第一行,因为我也想显示我的 ref dll。
为什么在 RoleEnvironment
中出错。我可以遗漏一些内容吗?
注意:我有 window azure 帐户,我可以轻松部署其他站点。
编辑
根据 Gaurav 的建议,我尝试了:
string cnn = "<add name=\"testconnectionstring\" DefaultEndpointsProtocol=\"http;AccountName=mystorage;AccountKey=A9Jlajksdh69szut9zOfsxWMD/qLaP3Gy6ID9mIarNmCDasdhlyNlAR9wV0NGjqJUZeM4x6x5bTumLv+1nC51clHDl5GTYYPA==" + " />";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(cnn);
但无法工作我收到错误无效组合。
您收到此错误的原因是因为 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;AccountName=your-account-name;AccountKey=your-account-key
要连接到本地存储模拟器,您的连接字符串应如下所示:
UseDevelopmentStorage=true