设为首页 收藏本站
查看: 1165|回复: 0

[经验分享] blob storage第一次亲密接触

[复制链接]

尚未签到

发表于 2017-7-1 10:05:12 | 显示全部楼层 |阅读模式
  由于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事件。



1 public class BlobClient
2     {
3         private static CloudBlobClient _cloudBlobClient;
4
5         static BlobClient()
6         {
7             _cloudBlobClient = CloudStorageAccount.Parse(Config.CloudStorageAccount).CreateCloudBlobClient();
8             _cloudBlobClient.RetryPolicy = new LinearRetry(TimeSpan.FromSeconds(1), 3);
9         }
10         
11         /// <summary>
12         /// Get file from blob
13         /// </summary>
14         /// <param name="containerName"></param>
15         /// <param name="blobName"></param>
16         /// <param name="blobPath"></param>
17         public static void GetBlob(string containerName, string blobName, string blobPath)
18         {
19             var container = _cloudBlobClient.GetContainerReference(containerName);
20
21             var blob = container.GetBlockBlobReference(blobName);
22             var mode = System.IO.FileMode.Create;
23             blob.DownloadToFileAsync(blobPath, mode);
24
25             return;
26         }
27
28         /// <summary>
29         /// Add file to blob
30         /// </summary>
31         /// <param name="containerName"></param>
32         /// <param name="blobName"></param>
33         /// <param name="blobPath"></param>
34         /// <param name="blobFileName"></param>
35         public static void AddBlob(string containerName, string blobName, string blobPath,string blobFileName)
36         {
37             var container = _cloudBlobClient.GetContainerReference(containerName);
38             container.CreateIfNotExists();
39
40             var blob = container.GetBlockBlobReference(blobName);
41             var mode = System.IO.FileMode.Open;
42             blob.UploadFromFileAsync(blobPath+blobFileName, mode);
43
44             return;
45         }
46
47         public static void DeleteBlob(string containerName, string blobName)
48         {
49             var container = _cloudBlobClient.GetContainerReference(containerName);
50             container.CreateIfNotExists();
51
52             var blob = container.GetBlockBlobReference(blobName);
53             blob.DeleteIfExistsAsync();
54
55             return;
56         }
57
58         public static void DeleteBlobContainer(string containerName)
59         {
60             var container = _cloudBlobClient.GetContainerReference(containerName);
61             container.CreateIfNotExists();
62
63             foreach (var item in container.ListBlobs(null, false))
64             {
65                 foreach (var item1 in ((CloudBlobDirectory)item).ListBlobs())
66                 {
67                     foreach (var item2 in ((CloudBlobDirectory)item1).ListBlobs())
68                     {
69                         ((CloudBlockBlob)item2).DeleteIfExistsAsync();
70                     }
71                 }
72             }
73         }
74     }
  执行写入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";

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-389941-1-1.html 上篇帖子: ARR 3.0 with SignalR 2.0 下篇帖子: Machine Learning Library (MLlib) Guide, BOOKS
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表