1. 前言

本文是根据Azure文档与本人做了验证之后写的。

如果想下载微软官网的demo, 请前往github https://github.com/Azure-Samples/storage-blob-dotnet-getting-started

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)创建存储账户

关于创建存储的步骤,请参照

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();

C# Azure 存储-Blob的更多相关文章

  1. azure跨域问题(访问azure存储账户数据,blob)

    访问azure存储账户数据报错:405错误 解决方案 打开访问的存储账户--->CORS--->Blob服务 全部填写*就可以了,点击“保存”即可. iframe就可以展示blob中的pd ...

  2. 【Azure 存储服务】代码版 Azure Storage Blob 生成 SAS (Shared Access Signature: 共享访问签名)

    问题描述 在使用Azure存储服务,为了有效的保护Storage的Access Keys.可以使用另一种授权方式访问资源(Shared Access Signature: 共享访问签名), 它的好处可 ...

  3. 【Azure 存储服务】Java Azure Storage SDK V12使用Endpoint连接Blob Service遇见 The Azure Storage endpoint url is malformed

    问题描述 使用Azure Storage Account的共享访问签名(Share Access Signature) 生成的终结点,连接时遇见  The Azure Storage endpoint ...

  4. Windows Azure Storage (19) 再谈Azure Block Blob和Page Blob

    <Windows Azure Platform 系列文章目录> 请读者在参考本文之前,预习相关背景知识:Windows Azure Storage (1) Windows Azure St ...

  5. 玩转Windows Azure存储服务——网盘

    存储服务是除了计算服务之外最重要的云服务之一.说到云存储,大家可以想到很多产品,例如:AWS S3,Google Drive,百度云盘...而在Windows Azure中,存储服务却是在默默无闻的工 ...

  6. 解读 Windows Azure 存储服务的账单 – 带宽、事务数量,以及容量

    经常有人询问我们,如何估算 Windows Azure 存储服务的成本,以便了解如何更好地构建一个经济有效的应用程序.本文我们将从带宽.事务数量,以及容量这三种存储成本的角度探讨这一问题. 在使用 W ...

  7. 关于Azure存储账户中存储虚拟机VHD文件的注意事项

     Joy Qiao from MSFT  Thu, Mar 12 2015 3:16 PM 我们在使用Azure时经常都会在Azure存储账户中放一些文件,包括Azure虚机的VHD文件也都是放在存储 ...

  8. 了解 Windows Azure 存储计费 – 带宽、事务和容量

     我们收到关于如何估算 Windows Azure存储成本,以便了解如何更好地构建一个经济有效的应用程序的问题.在本文中,我们将从带宽.事务和容量这三种存储成本的角度探讨这一问题. 使用 Wind ...

  9. 了解 Windows Azure 存储的可伸缩性、可用性、持久性和计费

    借助 Windows Azure存储,应用程序开发者及其应用程序和用户可以在云中使用可用性更高.持久性更长.可伸缩性更强的海量存储.开发者可以构建能随时随地高效访问数据的服务,在所需的时间段内存储任意 ...

随机推荐

  1. oracle(sql)基础篇系列(四)——数字字典、索引、序列、三范式

      数字字典表 --查看当前用户下面有哪些张表 select * from user_tables; select table_name from user_tables;   --查看当前用户下面有 ...

  2. .NET 读取本地文件绑定到GridViewRow

    wjgl.aspx.cs: using System; using System.Collections; using System.Configuration; using System.Data; ...

  3. 半吊子学习Swift--天气预报程序-准备工作

    MacBookPro买完快半年了,当初想着买个本本学点ios,买完就看了几天的教程[捂脸],最近发现人都要废了,想重新开始学习Swift并将每天的进程通过博客发布来督促自己. 由于文笔不好,接触Swi ...

  4. hello!

    今天是个星期天 第一次开通了朕的博客 么么哒 感觉很困 唔~晚安zzzzz

  5. Python Turtle

    之前对这个turtle这个模块不了解,觉得没什么意思,最近试了一下发现不错,来点最简单的.写的时候深刻感受到自己智商是个硬伤,算角度都算了半天... 图就不导了吧,懒癌晚期... import tur ...

  6. WebRTC通信流程

    WebRTC是HTML5支持的重要特性之一,有了它,不再需要借助音视频相关的客户端,直接通过浏览器的Web页面就可以实现音视频对聊功能.而且WebRTC项目是开源的,我们可以借助WebRTC源码快速构 ...

  7. ubuntu下安装了express2.5.8,如何更新它?

    在ubuntu上通过apt-get install node-express,结果发现它的版本是2.5.8. 想安装express4.0+的版本,一直不能正确安装,所以一时兴起,打算先删掉它,再重新安 ...

  8. spring3.0使用annotation完全代替XML

    @Service与@Component有什么不同?那天被问到这个问题,一时之间却想不起来,就利用这篇文章来纪录spring3.0中常用的annotation. 从spring2.5开始,annotat ...

  9. Jquery垂直下拉二级菜单

    自己做了一个基于Jquery 的垂直下拉二级菜单功能,直接看图: Html的代码如下: <!DOCTYPE html> <html> <head> <meta ...

  10. 关于dev无法更新、调试的问题