1. 前言
本文是根据 Azure 文档与本人做了验证之后写的.
如果想下载微软官网的 demo, 请前往 github
2. 介绍
Azure Blob 是存储很大空间的服务,能允许存储与访问通过 http 或 https.Blob 是有公有与私有的属性.公有是所有人可以看到的链接,私有是要通过秘钥等才可以访问到资源.
blob 可以存储:
1)images 或 document 指向一个文件夹
2)保存文件
3)视频与音频
4)存储数据的备份和恢复,灾难恢复和归档
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)创建存储账户
关于创建存储的步骤,请参照
中的第 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();
来源: http://www.cnblogs.com/alunchen/p/5767984.html