Windows Azure Storage (22) Azure Storage如何支持多级目录
《Windows Azure Platform 系列文章目录》
熟悉Azure平台的读者都知道,Azure Blob有三层架构。如下图:(注意blob.core.chinacloudapi.net是Azure China的Service Endpoint)
1.Blob Name: 存储账号名称
2.Container Name,容器名称。概念上类似于文件夹
3.Blob Name:文件名称
Azure Storage Block Blob概念上类似网盘,用户可以把文件、图片、照片直接保存到Azure Block Blob中。
相比传统的文件系统目录,Azure Block Blob只有一层结构,即Container/BlobName。Azure Block Blob不支持多级目录。
假设客户的软件架构要求支持多级目录的话,迁移到Azure Block Blob就会遇到一些文件。如下图:
qq.png这个文件的系统全目录是:D:\1\2\3\qq.png
而我们还有一个同样的文件名qq.png,他的目录如下:
与上面的qq.png的文件名是相同的,但是文件目录是不同的。
遇到这种情况,我们有两种解决方案:
一.使用关系型数据库,创建数据库表,实现多级目录与Azure Storage对应关系
二.将Azure Blob Name进行重命名
这里分别介绍一下这2个解决方案
一.使用关系型数据库,创建数据库表,实现多级目录与Azure Storage对应关系
在这种情况下,我们需要准备以下操作
1.将文件系统的文件进行重命名,设置为guid。如111-222-333.jpg
2.在关系型数据库创建如下表,字段为:
索引 | 源数据名称 | AzureBlob数据名称 | AzureBlobAccount | AzureBlobContainerName | AzureBlobURL |
1 | myphoto.png | 111-222-333.jpg | contoso | photos | https://contoso.blob.core.chinacloudapi.cn/photos/111-222-333.jpg |
2 | myword.docx | AAA-BBB-CCC.docx | contoso | words | https://contoso.blob.core.chinacloudapi.cn/words/AAA-BBB-CCC.docx |
通过把文件系统中的源数据,进行文件名的重命名,并且把重命名后的文件保存到Azure Storage中,以改进Azure Blob只有一层目录。
二.直接修改Azure Blob Name,文件名设置为包含\
这样我们把Blob Name修改为:1/2/3/qq.png和A/B/C/qq.png。修改为文件系统的全路径:
如下面的连接:
https://leizhangstorage.blob.core.chinacloudapi.cn/share/1/2/3/qq.png
https://leizhangstorage.blob.core.chinacloudapi.cn/share/A/B/C/qq.png
显示结果如下:
这样就可以实现Azure Blob的多级目录了。
另外如何可以方便的把本地文件夹的文件保存到Azure Storage中呢?这里推荐2种方法:
1.使用AzCopy
具体可以参考我之前的博客文章:Windows Azure Storage (21) 使用AzCopy工具,加快Azure Storage传输速度
将本地计算机某个目录下的所有文件和子目录,递归复制到Azure Storage中
该命令如下:
AzCopy /Source:C:\myfolder /Dest:https://leizhangstorage.blob.core.windows.net/files /DestKey:[存储账号的Key] /S
注意上面的命令行中,最后的参数是 /S
假设C:\myfolder下有以下目录:
C:\myfolder\abc.txt
C:\myfolder\abc1.txt
C:\myfolder\abc2.txt
C:\myfolder\subfolder\a.txt
C:\myfolder\subfolder\abcd.txt
则执行上述AzCopy命令后,上面所有5个文件都会被复制到Azure Storage中。
2.使用Blob Browser
上面介绍的AzCopy毕竟是命令行工具,如果对命令行工具不熟悉的话,可以使用BlobBrowser。
BlobBrowser是GUI图形界面的工具,背后其实是利用AzCopy命令行工具。
我们安装完BlobBrowser之后,可以在界面上进行配置。如下图:
上图中,我们点击Add,增加新的存储账号信息:
在弹出窗口中,输入以下信息:
上图中,
- Name输入显示名称
- Storage Account Name,输入存储账号名称
- Storage Account Key,输入存储账号的密钥
注意,如果使用国内由世纪互联运维的Azure,需要在上图中,勾选Use China Endpoint。
这样就可以使用Blob Browser的图形界面,来管理并上传下载Azure Storage Account了。
Windows Azure Storage (22) Azure Storage如何支持多级目录的更多相关文章
- ZIP解压缩文件的工具类【支持多级目录|全】
ZIP解压缩文件的工具类[支持多级目录|全] 作者:Vashon 网上有很多的加压缩示例代码,但是都只是支持一级目录的操作,如果存在多级目录的话就不行了.本解压缩工具类经过多次检查及重构,最终分享给大 ...
- Azure ARM (22) Azure Policy入门
<Windows Azure Platform 系列文章目录> 我们知道,在Azure服务层级中,分为以下几个层次: 1.企业合同 2.订阅 3.资源组 4.资源 我们使用的Azure资源 ...
- 让Codeigniter控制器支持多级目录
<?php if (!defined('BASEPATH')) { exit ('No direct script access allowed');} class MY_Router exte ...
- JPG 批量压缩、 PNG32、PNG24转PNG 透明批量压缩工具 【JPNG】 支持多级目录
说在最前,压缩不一定是最好的,仅仅是为了方便自己工作需要.主要是手机端图片 算法说明:JPG压缩使用的是 adobe 的 JPGEncoder+ AIR的JPEGEncoderOptions (注 ...
- CodeIgniter 让控制器可以支持多级子目录的 Router 类库
MY_Router.php 放到 system/application/libraries 目录下,就可以让 CI 的控制器支持多级子目录了.这样,你就可以在 system/application/c ...
- Windows Azure Storage (25) Azure Append Blob
<Windows Azure Platform 系列文章目录> 在笔者之前的文章中,我们介绍了Azure Blob 有两种:Block Blob和Page Blob. 在这里笔者介绍Blo ...
- [Windows Azure] What is a Storage Account?
What is a Storage Account? A storage account gives your applications access to Windows Azure Blob, T ...
- Azure 基础:Blob Storage
Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在前文中介绍了 Table Storage 的基本 ...
- Azure 基础:Table storage
Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table.其中的 Table 就是本文的主角 Azure Tabl ...
随机推荐
- AsyncTask异步上传文本到服务器
服务器代码:用于接收客户端信息 package ches; import java.io.IOException; import java.io.PrintWriter; import javax.s ...
- 浩瀚技术团队... 安卓智能POS移动PDA开单器 开单器 进销存系统 进销存系统
浩瀚技术团队... 智能POS移动PDA开单器 开单器 进销存系统 进销存系统 点餐 会员管理 会员管理 深度解读 手机APP移动办公到底是什么? 快速打单POS·不仅仅是快那么简单!
- 寒冬之下,浩瀚智能开单收银打印扫描POS为何能在批发零售门店商场 车销行业 风靡!:进销存+打印扫描POS机
是一款适用于商超.餐饮.服装鞋帽.家电专营等等具有零售行业特点的企业,供企业管理人员用于管理.监控本品牌的市场占有率.门店覆盖区域.网点分布合理性等经济地理信息的工具平台. 1,功能一:业务抄单文章来 ...
- Spring Cloud 统一配置
http://blog.csdn.net/catoop/article/details/50955949
- iOS APP性能优化
:应用启动时间 应用启动时,只加载启动相关的资源和必须在启动时加载的资源. :本地图片加载方式 本地图片加载常用方法有两种: a. [UIImage imageNamed:@"xx.png& ...
- Codeforces Round #344 (Div. 2) A. Interview
//http://codeforces.com/contest/631/problem/Apackage codeforces344; import java.io.BufferedReader; i ...
- 【BZOJ3314】 [Usaco2013 Nov]Crowded Cows 单调队列
第一次写单调队列太垃圾... 左右各扫一遍即可. #include <iostream> #include <cstdio> #include <cstring> ...
- 原生js封装二级城市下拉列表
闲的蛋疼,封装了个二级城市下拉 先保证html里有 <select id="province" size=1 > </select> <select ...
- sublime_text_2 ubuntu下无法输入中文 解决方法
参考资料:http://my.oschina.net/wugaoxing/blog/121281 环境配置:ubuntu 14.10 1.保存下述代码为 sublime_imfix.c 文件 /* s ...
- Python 爬虫3——第一个爬虫脚本的创建
在进行真正的爬虫工程创建之前,我们先要明确我们所要操作的对象是什么?完成所有操作之后要获取到的数据或信息是什么? 首先是第一个问题:操作对象,爬虫全称是网络爬虫,顾名思义,它所操作的对象当然就是网页, ...