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. SGIP、SMGP 长短信发送问题小结

    长短信发送问题.1.将信息长度拆开发送.2.为了解决长短信拆分发送,在手机终端,收到的顺序错乱,所以在每一段短信发送完成后,延时5秒,这样在手机终端客户收到的信息,就会按照拆分的顺序发送. //信息总 ...

  2. 网页中插入外部视频的几种方法(PC与手机网页通用)

    网页中加入视频的几种方法(PC与手机网页通用) 方法一: <!doctype html> <html> <head> <meta charset=" ...

  3. 一场IT民工 与 人贩子 之间的战争 - 感受来自PostgreSQL的爱

    标签 PostgreSQL , 图数据库 , 社会关系分析 , 流式分析 , 人贩子 , 图像识别 , 人脸识别 , 公安刑侦 , pipelinedb , stream , neo4j , plpr ...

  4. Android中轻松显示Gif图片

    android中现在没有直接显示gif的view,只能通过mediaplay来显示,且还常常不能正常显示出来,为此写了这个gifview,其用法和imageview一样使用方法:1-把GifView. ...

  5. tp中使用分页技术

    1 public function showList() { $m_ld = D ( 'guangxi_ld' ); $page = I ( 'get.p', 1 ); // 在配置中获取分页值 $p ...

  6. Operation not allowed after ResultSet closed--操作mysql数据库

    一个stmt多个rs进行操作.那么从stmt得到的rs1,必须马上操作此rs1后,才能去得到另外的rs2,再对rs2操作.不能互相交替使用,会引起rs已经关闭错误——Operation not all ...

  7. mac安装java8

    http://stackoverflow.com/questions/24342886/how-to-install-java-8-on-mac brew tap caskroom/cask brew ...

  8. bind模拟

    if (!Function.prototype.bind) { Function.prototype.bind = function(oThis) { if (typeof this !== 'fun ...

  9. 配置linux服务器的一些操作

    本次课程实验,我们选择的是ubuntu 14.04操作系统,不像使用RDP连接windows服务器那样可以直观的看到远程端的图形界面,只能通过Xshell以命令行进行操作,那么就来说说配置远程linu ...

  10. 全本软件白名单 Quanben Software Whitelist

    Windows应用软件 Windows Applications (TBU) 全本推荐微软Windows 10操作系统 Quanben recommends Microsoft Windows 10 ...