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的图形界面是相当的绚丽又多彩. ...
随机推荐
- 我的STL之旅 MyStack
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> us ...
- MapReduce简介
MapReduce简介 参考自[http://www.cnblogs.com/swanspouse/p/5130136.html] MapReduce定义: MapReduce是一种可用于数据处理的编 ...
- 打印心形---print 的基础使用
#!/bin/usr/env python#coding=utf-8'''用学习到的print语句,完成如下图形的打印工作打印心形'''print " *** *** "print ...
- 读文档readarx.chm
readarx.chm <Tips and Techniques> Incremented AutoCAD Registry Number Ideally, a change of reg ...
- [Eclipse] - 集成JBoss7热加载和自动发布
使用Eclipse + JBoss开发时,总是要重启项目或JBoss,烦人.下面方法可以很简单的实现Eclipse + JBoss热加载和自动发布. 我的环境是JBoss 7.1.1 Final 1) ...
- HackerRank "New Year Chaos"
Two tricks here: 1. Counting no. of inversed pairs - using Merge Sort, nothing special 2. How to che ...
- IOCP简单实现
本人工作是服务端性能测试,因工作需要开发机器人框架,选用底层的时候看到网上满大街的IOCP介绍,还有说IOCP比WSAAsyncSelect复杂等等,所以只好转WSAAsyncSelect实现. 因并 ...
- Hadoop数据读写原理
数据流 MapReduce作业(job)是客户端执行的单位:它包括输入数据.MapReduce程序和配置信息.Hadoop把输入数据划分成等长的小数据发送到MapReduce,称之为输入分片.Hado ...
- Good Bye 2013 A
A. New Year Candles time limit per test 1 second memory limit per test 256 megabytes input standard ...
- bootloader制作过程
主机环境:Ubuntu10.04.4 LTS 使用工具:buildroot-201208 目 标 板:S3C2410 --------------------------------------- ...