《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如何支持多级目录的更多相关文章

  1. ZIP解压缩文件的工具类【支持多级目录|全】

    ZIP解压缩文件的工具类[支持多级目录|全] 作者:Vashon 网上有很多的加压缩示例代码,但是都只是支持一级目录的操作,如果存在多级目录的话就不行了.本解压缩工具类经过多次检查及重构,最终分享给大 ...

  2. Azure ARM (22) Azure Policy入门

    <Windows Azure Platform 系列文章目录> 我们知道,在Azure服务层级中,分为以下几个层次: 1.企业合同 2.订阅 3.资源组 4.资源 我们使用的Azure资源 ...

  3. 让Codeigniter控制器支持多级目录

    <?php if (!defined('BASEPATH')) { exit ('No direct script access allowed');} class MY_Router exte ...

  4. JPG 批量压缩、 PNG32、PNG24转PNG 透明批量压缩工具 【JPNG】 支持多级目录

    说在最前,压缩不一定是最好的,仅仅是为了方便自己工作需要.主要是手机端图片 算法说明:JPG压缩使用的是  adobe 的 JPGEncoder+ AIR的JPEGEncoderOptions (注 ...

  5. CodeIgniter 让控制器可以支持多级子目录的 Router 类库

    MY_Router.php 放到 system/application/libraries 目录下,就可以让 CI 的控制器支持多级子目录了.这样,你就可以在 system/application/c ...

  6. Windows Azure Storage (25) Azure Append Blob

    <Windows Azure Platform 系列文章目录> 在笔者之前的文章中,我们介绍了Azure Blob 有两种:Block Blob和Page Blob. 在这里笔者介绍Blo ...

  7. [Windows Azure] What is a Storage Account?

    What is a Storage Account? A storage account gives your applications access to Windows Azure Blob, T ...

  8. Azure 基础:Blob Storage

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在前文中介绍了 Table Storage 的基本 ...

  9. Azure 基础:Table storage

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table.其中的 Table 就是本文的主角 Azure Tabl ...

随机推荐

  1. ADT + JNI实例

    Author: Maddock Date: 2015-07-09 本文简单记录了Android中利用jni开发程序初级教程: 步骤 1 下载安装ADT 2 配置NDK 3 新建安卓工程 4 测试jni ...

  2. 高性能的JavaScript--数据访问(2)

    动态作用域 无论是with表达式还是try-catch表达式的catch子句,以及包含()的函数,都被认为是动态作用域.一个动态作用域只因为代码运行而存在.因此无法通过静态分析(查看代码机构)来确定( ...

  3. mac+phpstorm+xampp断点调试

    1.下载xdebug文件 http://xdebug.org/wizard.php 将phpinfo()的源代码复制到文本框中,xdebug会提示如何配置和下载哪个版本的xdebug. 全部下载地址: ...

  4. Maven的配置和使用(三)

    下面记录下如何使用Maven进行jar包的管理和更新. 在Maven中我们是通过对pom.xml文件的配置来对项目的包进行管理的,找到该文件并打开: <project xmlns="h ...

  5. HDU 4467 分块

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4467 题意:给定n个点m条边的无向图,点被染色(黑0/白1),边带边权.然后q个询问.询问分为两种: ...

  6. ubuntu 16.04 + N驱动安装 +CUDA+Qt5 + opencv

    Nvidia driver installation(after download XX.run installation file) 1. ctrl+Alt+F1   //go to virtual ...

  7. 基于dubbo构建分布式项目与服务模块

      关于分布式服务架构的背景和需求可查阅http://dubbo.io/.不同于传统的单工程项目,本文主要学习如何通过maven和dubbo将构建分布项目以及服务模块,下面直接开始. 创建项目以及模块 ...

  8. T-SQL Recipes之Organizing and Archiving Data

    The Problem 当我们处理存档数据或内存数据时,我们想要自定义命名表名,数据库,架构加上日期,时间,或者应用名时,用标准的TSQL来实现是比较困难的. 假设我们有一张日志表,增长速度异常快.但 ...

  9. 使用C#在CEF中拦截并响应请求

    一.前言 忙里偷闲,研究了一下如何在CEF中拦截请求,并作出响应.这个功能对某些需要修改服务器响应的需求来说必不可少,可以直接读取本地文件作为响应内容. C#的CEF封装项目有很多,我使用的是Chro ...

  10. XDocument获取指定节点

    string xmlFile = @"D:\Documents\Visual Studio 2013\Projects\Jesee.Web.Test\ConsoleApplication1\ ...