WEB开发网
开发学院服务器云计算 Windows Azure Platform (十四)Windows Azure Sto... 阅读

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 Platform (十四)Windows Azure Storage Service存储服务之Blob详解(上),在开始介绍

关于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

Tags:Windows Azure Platform

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接