Windows Azure Platform (十四)Windows Azure Storage Service存储服务之Blob详解(上)
2012-03-22 12:07:15 来源:WEB开发网关于Blob Storage的概念,请参考 Windows Azure Platform (七) Windows Azure Storage Service存储服务 。
在开始介绍之前,请确保您已经下载了最新的Windows Azure开发工具,我使用的是1.6版本。本次介绍使用Visual Studio 2010作为开发工具。
1.新建Azure Project
以管理员身份运行Visual Studio 2010,并新建一个Windows Azure Project,我命名为AzureBlobStorage
然后选择WebRole-->右键-->属性
在Settings页面,Add Setting,类型选择Connection String,并且按最右边的"..."按钮
选择"Use the Windows Azure storage emulator",然后选择"OK"
然后添加另外一个Setting(设置),叫做ContainerName并且把它的Type改成"String",值设置成gallery
注意:
Container和Blob的命名规则!
2.打开Default.aspx.cs
添加引用命名空间
using Microsoft.WindowsAzure.StorageClient; using Microsoft.WindowsAzure; using Microsoft.WindowsAzure.ServiceRuntime; using System.Collections.Specialized; using Microsoft.WindowsAzure.StorageClient.Protocol;
前端的ASPX添加如下控件:
然后添加代码内容:
namespace MyWebRole { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.EnsureContainerExists(); } } private void EnsureContainerExists() { var container = GetContainer(); // 检查container是否被创建,如果没有,创建container container.CreateIfNotExist(); var permissions = container.GetPermissions(); //对Storage的访问权限是可以浏览Container permissions.PublicAccess = BlobContainerPublicAccessType.Container; container.SetPermissions(permissions); } private CloudBlobContainer GetContainer() { //获取ServiceConfiguration.cscfg配置文件的信息 var account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString"); var client = account.CreateCloudBlobClient(); //获得BlobContainer对象 return client.GetContainerReference(RoleEnvironment.GetConfigurationSettingValue("ContainerName")); } protected void upload_Click(object sender, EventArgs e) { if (imageFile.HasFile) { //输出图片文件的信息 status.Text = "Inserted [" + imageFile.FileName + "] - Content Type [" + imageFile.PostedFile.ContentType + "] - Length [" + imageFile.PostedFile.ContentLength + "]"; this.SaveImage(imageFile.FileName,imageFile.PostedFile.ContentType,imageFile.FileBytes); } else status.Text = "No image file"; } private void SaveImage(string fileName, string contentType, byte[] data) { //获得BlobContainer对象并把文件上传到这个Container var blob = this.GetContainer().GetBlobReference(fileName); blob.Properties.ContentType = contentType; // 创建元数据信息 var metadata = new NameValueCollection(); metadata["Name"] = fileName; // 上传图片 blob.Metadata.Add(metadata); blob.UploadByteArray(data); } }
3.打开Global.asax.cs文件,添加如下代码
void Application_Start(object sender, EventArgs e) { // This code sets up a handler to update CloudStorageAccount instances when their corresponding // configuration settings change in the service configuration file. CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) => { // Provide the configSetter with the initial value configSetter(RoleEnvironment.GetConfigurationSettingValue(configName)); }); }
4.运行应用程序,使用FileUpload查找本地图片,然后点击"Upload Image",图片就能上传到本地Storage Emulator的Blob里了。
6.打开Visual Studio,展开左侧的Server Explorer列表,依次展开Windows Azure Storage-->Development-->Blob-->gallery
其中Developement表示我使用的是本地的模拟器
gallery就是我前面设置的Blob Container
我们选中Azure.jpg,右键属性,可以看使用Storage Emluator后在本地的URL
我们可以通过打开本地的浏览器来查看。
5.下载我的工程文件:http://files.cnblogs.com/threestone/AzureBlobStorage.rar
更多精彩
赞助商链接