blob storage第一次亲密接触
由于azure上各个云服务都是分开的,所以当一个地方生成文件后,我在别的地方想要读取他就变得困难,不过azure上面有解决方案,就是azure blob storage。
在现有的订阅账号下,新建一个存储blob,分私有和公共,私有的为私有存储,外部链接无法访问,公共则可以在外部直接通过链接进行存储内容的访问。
首先在cloud service和portal配置文件中均需添加一个key为storageAccount,value则为azure上的blobend,queueend,tableend,以及他的thumbprint。
在configuration文件中配置改存储名称。
public static string EmailFileContainer
{
get
{
return "email-response-save";
}
}
建立一个BlobClient类,用来执行blob事件。
public class BlobClient
{
private static CloudBlobClient _cloudBlobClient; static BlobClient()
{
_cloudBlobClient = CloudStorageAccount.Parse(Config.CloudStorageAccount).CreateCloudBlobClient();
_cloudBlobClient.RetryPolicy = new LinearRetry(TimeSpan.FromSeconds(), );
} /// <summary>
/// Get file from blob
/// </summary>
/// <param name="containerName"></param>
/// <param name="blobName"></param>
/// <param name="blobPath"></param>
public static void GetBlob(string containerName, string blobName, string blobPath)
{
var container = _cloudBlobClient.GetContainerReference(containerName); var blob = container.GetBlockBlobReference(blobName);
var mode = System.IO.FileMode.Create;
blob.DownloadToFileAsync(blobPath, mode); return;
} /// <summary>
/// Add file to blob
/// </summary>
/// <param name="containerName"></param>
/// <param name="blobName"></param>
/// <param name="blobPath"></param>
/// <param name="blobFileName"></param>
public static void AddBlob(string containerName, string blobName, string blobPath,string blobFileName)
{
var container = _cloudBlobClient.GetContainerReference(containerName);
container.CreateIfNotExists(); var blob = container.GetBlockBlobReference(blobName);
var mode = System.IO.FileMode.Open;
blob.UploadFromFileAsync(blobPath+blobFileName, mode); return;
} public static void DeleteBlob(string containerName, string blobName)
{
var container = _cloudBlobClient.GetContainerReference(containerName);
container.CreateIfNotExists(); var blob = container.GetBlockBlobReference(blobName);
blob.DeleteIfExistsAsync(); return;
} public static void DeleteBlobContainer(string containerName)
{
var container = _cloudBlobClient.GetContainerReference(containerName);
container.CreateIfNotExists(); foreach (var item in container.ListBlobs(null, false))
{
foreach (var item1 in ((CloudBlobDirectory)item).ListBlobs())
{
foreach (var item2 in ((CloudBlobDirectory)item1).ListBlobs())
{
((CloudBlockBlob)item2).DeleteIfExistsAsync();
}
}
}
}
}
执行写入blob storage步骤。
BlobClient.AddBlob(Config.EmailFileContainer, "MailExportTotalImage/"+ imgName, location, imgName);
读取blob storage中的文件。
BlobClient.GetBlob(Config.EmailFileContainer, "MailExportAttachment1/" + sFileName, uploadPath + sFileName);
将内存流数据存入TXT。
var fn = DateTime.Now.ToString("yyyyMMddHHmmss") + ".txt";
byte[] bs = stream.ToArray();
String contentStr = System.Text.Encoding.UTF8.GetString(bs);
BlobClient.AddBlob(Config.FileContainer, fn, contentStr);
若要创建公共可访问文件的链接,需在对应云服务的configuration文件中申明一个设置名称。
<ConfigurationSettings>
<!--Local-->
<Setting name="aaaa" value="bbbbbbbbbbb" />
.
.
.
<Setting name="EmailBlobStorage" value="http(s)://xxx.blob.core.chinacloudapi.cn/email-response-save/" />
</ConfigurationSettings>
核心configuration文件中建立一个指向云服务configuration特定设置名称的属性。
public static string EmailBlobStorage
{
get
{
return CloudConfigurationManager.GetSetting("EmailBlobStorage");
}
}
使用:
var location = Config.EmailBlobStorage;
var imgsrc = location + "MailExportTotalImage/" + string.Format("{0:yyyy-MM-dd}", DateTime.Today.ToGmt8()) + _title + ".png";
blob storage第一次亲密接触的更多相关文章
- 【阿里云产品公测】与云引擎ACE第一次亲密接触
阿里云用户:林哥神话 公测当然是第一次了.这个第一次亲密接触,但话又说回来对ACE我一直都不是那感兴趣的,但是看到阿里介绍还是那般神奇,再加上200无代金券来更加给力.最后就申请了这次公测. 平时一直 ...
- 第四章 跨平台图像显示库——SDL 第一节 与SDL第一次亲密接触
http://blog.csdn.net/visioncat/article/details/1596576 GCC for Win32 开发环境介绍(5) 第四章 跨平台图像显示库——SDL 第一节 ...
- 多线程第一次亲密接触 CreateThread与_beginthreadex本质区别
本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beg ...
- Linux就是这个范儿之第一次亲密接触(3)
原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 .作者信息和本声明.否则将追究法律责 1.4 返璞归真的命令行 有一种说法,现代计算机不是靠电力驱动,而是靠“鼠标”.多少应用程序的界面需 ...
- 我和Python的第一次亲密接触 - 零基础入门学习Python001
我和Python的第一次亲密接触 让编程改变世界 Change the world by program 小甲鱼经常说,学习一门编程语言就是要深入其中,要把编程语言想象为你的女朋友你的情人,这样你学习 ...
- 第一次亲密接触MSF
第一次亲密接触MSF Metasploit Framework介绍 Metasploit是一款开源安全漏洞检测工具,附带数百个已知的软件漏洞,并保持频繁更新.被安全社区冠以“可以黑掉整个宇宙”之名的强 ...
- [OS] 多线程--第一次亲密接触CreateThread与_beginthreadex本质区别
转自:http://blog.csdn.net/morewindows/article/details/7421759 本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_be ...
- Linux认知之旅【01 与Linux第一次亲密接触】!
一.搜索LINUX,了解它的前世今生! linux很厉害,应用在很多方面,我知道有超算.IOT.树莓派. 而且好多开发人员都在用这个系统.linux作为服务器使用,常年不用重启,不宕机,很少受病毒影响 ...
- Linux就是这个范儿之第一次亲密接触(2)
原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 .作者信息和本声明.否则将追究法律责 1.2 不一样的图形操作 几乎所有Linux的新用户都会认为Linux的图形界面是相当的绚丽又多彩. ...
随机推荐
- php 单引号 双引号 ,php字符串/ hmtl / 数据库显示/ 及php的几个转化函数
* 以单引号为定界符的php字符串,支持两个转义\'和\\* 以双引号为定界符的php字符串,支持下列转义(\'会直接输出\' ,也会转义 \\): \n 换行(LF 或 ASCII 字符 0x ...
- Squid代理服务器的安装与配置
一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用 ...
- pt-query-digest用法
pt-query-digest用法 http://blog.csdn.net/wxc20062006/article/details/52387505
- C#中获取服务器IP,客户端IP以及网卡物理地址
客户端ip: Request.ServerVariables.Get("Remote_Addr").ToString(); 客户端主机名: Request.ServerVariab ...
- Docker实践(3)—浅析device mapper的thin provision
thin provision是在 kernel3.2 中引入的.它主要有以下一些特点: (1)允许多个虚拟设备存储在相同的数据卷中,从而达到共享数据,节省空间的目的: (2)支持任意深度的快照.之前的 ...
- SSIS 参数与环境
微软 BI 系列随笔 - SSIS 基础 - 参数与环境 简介 在上一篇博客中,主要讲述了如何实现SSIS的项目部署,参见 微软 BI 系列随笔 - SSIS 2012 基础 - SSIS 项目部署模 ...
- jQuery使用示例详解
[jquery引用字段] <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv ...
- HTTP响应状态码记录
HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展.目前在WWW中使用的是HTTP/1.0 ...
- 对ASP.NET运行机制之 一般处理程序ashx的学习
一般处理程序(HttpHandler)是·NET众多web组件的一种,ashx是其扩展名.其中一个httpHandler接受并处理一个http请求,类比于Java中的servlet.类比于在Java中 ...
- gerrit集成gitweb后,点击gitweb连接:not found(转载)
From:http://blog.sina.com.cn/s/blog_4fb490ff01018i0v.html 需要添加refs/meta/config的read access权限.