1. 前言html
本文是根据Azure文档与本人作了验证以后写的。git
若是想下载微软官网的demo, 请前往github https://github.com/Azure-Samples/storage-blob-dotnet-getting-startedgithub
2. 介绍api
Azure Blob是存储很大空间的服务,能容许存储与访问经过http或https。Blob是有公有与私有的属性。公有是全部人能够看到的连接,私有是要经过秘钥等才能够访问到资源。app
blob能够存储:优化
1)images或document指向一个文件夹ui
2)保存文件spa
3)视频与音频code
4)存储数据的备份和恢复、灾难恢复和归档orm
5)由一个本地存储数据进行分析或azure托管服务
3. 概念
1)Container容器:
一个容器能够包含不少个blobs,一个帐号能够包含不少个containers容器。请注意容器名字要为小写。
2)Blob:
blob是一个文件的属性与大小。Azure存储的blobs包含三种类型:block blobs、page blobs、append blobs。
Block blobs:存储的是text与二进制文件,例如documents与媒体类型文件。
Append blobs:是相似于Block blobs,可是它是作了优化的操做,因此它是用于logging的操做。一个简单的block blob或者 append blob 能够包含5000个blocks,最大每一个文件4MB,整个大小最大为194GB(4MB*50000)
Page blobs:最大为1TB,是能够读写的操做。
4. 代码开始
1)建立存储帐户
关于建立存储的步骤,请参照
http://www.cnblogs.com/alunchen/p/5765700.html
中的第3大点
2)导入包,在包管理器上面分别输入下面的命令:
Install-Package WindowsAzure.Storage
Install-Package Microsoft.WindowsAzure.ConfigurationManager
2)创建链接
string connStr = "DefaultEndpointsProtocol=https;AccountName=ceslighttest;AccountKey=cp3JXYFXu6XhV18oVQW2q7urHOhxhm9Guwl6uElTBWd9nxxxxxxxxxxxxxx;EndpointSuffix=core.chinacloudapi.cn"; //创建链接 CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connStr); CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
3)建立容器
// 建立容器,是否存在 CloudBlobContainer container = blobClient.GetContainerReference("testuimageblobcontainercompanyname"); container.CreateIfNotExists();
4)设置权限
容器默认是private的,意思是要指定key才能下载图片。若是要把图片设置成对外哪里均可如下载,请设置成public
//容器默认是private的,意思是要指定key才能下载图片。若是要把图片设置成对外哪里均可如下载,请设置成public container.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob });
5)建立文件,并上传本地文件
// 建立文件名,若是有相同的文件名,则替换 CloudBlockBlob blockBlob = container.GetBlockBlobReference("23.jpg"); //上传本地文件 using (var fileStream = System.IO.File.OpenRead(@"E:\23.jpg")) { blockBlob.UploadFromStream(fileStream); }
6)show所有在容器里面的blobs文件
// 输出文件大小与路径uri foreach (IListBlobItem item in container.ListBlobs(null, false)) { if (item.GetType() == typeof(CloudBlockBlob)) { CloudBlockBlob blob = (CloudBlockBlob)item; r += string.Format("Block blob of length {0}: {1}", blob.Properties.Length, blob.Uri); } else if (item.GetType() == typeof(CloudPageBlob)) { CloudPageBlob pageBlob = (CloudPageBlob)item; r += string.Format("Page blob of length {0}: {1}", pageBlob.Properties.Length, pageBlob.Uri); } else if (item.GetType() == typeof(CloudBlobDirectory)) { CloudBlobDirectory directory = (CloudBlobDirectory)item; r += string.Format("Directory: {0}", directory.Uri); } }
7)删除blobs
CloudBlockBlob blockBlob = container.GetBlockBlobReference("23.jpg"); //删除blob blockBlob.Delete();