Windows Azure Storage (2) Windows Azure Storage Service存储服务之Blob详解(上)
2012-01-19 22:24
519 查看
《Windows Azure Platform 系列文章目录》
[b][b] 如果读者使用的是国内由世纪互联运维的Azure China服务,请参考笔者的博文Azure China (4) 管理Azure China Storage Account[/b][/b]
[b][b][b][b] 如果需要参考Azure China使用SAS Token的Sample Code,请参考笔者的博文:Azure China (10) 使用Azure China SAS Token[/b][/b][/b][/b]
本章我们会介绍如何在本地模拟器使用Blob Storage存储图片。
关于Blob Storage的概念,请参考 Windows Azure Platform (七) Windows Azure Storage Service存储服务 。
在开始介绍之前,请确保您已经下载了最新的Windows Azure开发工具,我使用的是1.6版本。本次介绍使用Visual Studio 2010作为开发工具。
Azure Container属性有三种
- Private:不允许匿名用户读取该容器中的Blob;
- Public Container:匿名用户可以读取该Container,并且可以列出Container所有Blob内容;
- Blob:匿名用户只能读取Blob,即只能根据Blob的URL来读取Blob,无法列出Container下所有的Blob。
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
添加引用命名空间
前端的ASPX添加如下控件:
然后添加代码内容:
3.打开Global.asax.cs文件,添加如下代码
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.下载我的工程文件:AzureBlobStorage.rar
[b][b] 如果读者使用的是国内由世纪互联运维的Azure China服务,请参考笔者的博文Azure China (4) 管理Azure China Storage Account[/b][/b]
[b][b][b][b] 如果需要参考Azure China使用SAS Token的Sample Code,请参考笔者的博文:Azure China (10) 使用Azure China SAS Token[/b][/b][/b][/b]
本章我们会介绍如何在本地模拟器使用Blob Storage存储图片。
关于Blob Storage的概念,请参考 Windows Azure Platform (七) Windows Azure Storage Service存储服务 。
在开始介绍之前,请确保您已经下载了最新的Windows Azure开发工具,我使用的是1.6版本。本次介绍使用Visual Studio 2010作为开发工具。
Azure Container属性有三种
- Private:不允许匿名用户读取该容器中的Blob;
- Public Container:匿名用户可以读取该Container,并且可以列出Container所有Blob内容;
- Blob:匿名用户只能读取Blob,即只能根据Blob的URL来读取Blob,无法列出Container下所有的Blob。
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); } //发现Azure Storage升级到2.0后API变了 private void SaveImage(string fileName, string contentType, byte[] data) { //获得BlobContainer对象并把文件上传到这个Container var blob = this.GetContainer().GetBlockBlobReference(fileName); blob.Properties.ContentType = contentType; using (var ms = new MemoryStream(data, false)) { blob.UploadFromStream(ms); } } }
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.下载我的工程文件:AzureBlobStorage.rar
相关文章推荐
- Windows Azure Storage (3) Windows Azure Storage Service存储服务之Blob详解(中)
- Windows Azure Storage (4) Windows Azure Storage Service存储服务之Blob Share Access Signature
- Windows Azure Storage (1) Windows Azure Storage Service存储服务
- Windows Azure Platform (九) Windows Azure Storage Service存储服务
- 微软开放技术发布开源 Jenkins 插件以将 Windows Azure Blob 服务用的开作存储库
- 微软开放技术发布开源 Jenkins 插件以将 Windows Azure Blob 服务用的开作存储库
- Windows Azure Storage (11) 计算你存储的Blob的大小
- 微软开放技术发布开源 Jenkins 插件以将 Windows Azure Blob 服务用的开作存储库
- 微软开放技术发布开源 Jenkins 插件以将 Windows Azure Blob 服务用的开作存储库
- [Windows Azure] How to use the Windows Azure Blob Storage Service in .NET
- 使用Windows Azure Blob 存储服务进行 SQL Server 备份和还原
- Windows Azure Storage (25) Azure Append Blob
- Azure Storage存储服务介绍
- Windows Azure Storage Service summary 1
- [New Portal]Windows Azure Storage (12) 本地冗余存储 vs 地理冗余存储 (上)
- Windows Azure Storage (19) 再谈Azure Block Blob和Page Blob
- [SDK2.2]Windows Azure Storage (16) 使用WCF服务,将本地图片上传至Azure Storage (上) 客户端代码
- Windows Azure Storage (10) Windows Azure 上的托管服务CDN (下) Hosted Service
- Windows Azure Cloud Service (18) 基于Input Endpoint通过Worker Role发布WCF服务
- [SDK2.2]Windows Azure Storage (15) 使用WCF服务,将本地图片上传至Azure Storage (上) 服务器端代码