zoukankan      html  css  js  c++  java
  • 玩转Windows Azure存储服务——网盘

    存储服务是除了计算服务之外最重要的云服务之一。说到云存储,大家可以想到很多产品,例如:AWS S3,Google Drive,百度云盘...而在Windows Azure中,存储服务却是在默默无闻的工作着,以至于除了虚拟机磁盘,大家都不知道Windows Azure的存储还能做些什么。的确,如果只是从Windows Azure的管理控制台来看,用户能针对Windows Azure存储所做的操作寥寥无几。也许,微软的初衷是将Windows Azure存储定位成面向开发人员的服务——Windows Azure存储提供了丰富的SDK和RESTful API,还有PowerShell和CLI。

    接下来,我们通过模拟一个真实的场景来熟悉Windows Azure存储的强大功能,这个场景就是网盘——我们把Windows Azure存储当网盘使用。我们使用PowerShell来进行演示,同理,用其他语言的SDK或者RESTful API亦可实现同样的功能。我们假定这篇文章的读者已经掌握Windows Azure存储相关的基本概念和Windows Azure PowerShell的基本操作。

    首先我们来定义一个存储账号上下文(context),在存储账号上下文中指定要使用的存储账号和访问密钥。

    $saContext=New-AzureStorageContext -StorageAccountName [存储账户名称] -StorageAccountKey [存储账号访问密钥]

    有了这个存储账号上下文,相当于为我们的网盘安了一个家,准备开工喽~~~

    Windows Azure Blob存储没有文件夹的概念,只有容器(Container),而且容器只有1层,不能像目录那样一层套一层。

    列目录——看看我们的存储账号中有哪些容器:

    Get-AzureStorageContainer -Context [存储账号上下文,例如:前文中定义的变量$saContext]

    列文件——列出指定容器中的文件:

    Get-AzureStorageBlob -Container [容器名称] -Context [存储账号上下文,例如:前文中定义的变量$saContext]

    上传文件——将本地文件上传到指定的容器中:

    Set-AzureStorageBlobContent -File [本地待上传的文件完整路径,例如:d:datademo.txt] -Container [容器名称] -Context [存储账号上下文]

    上传文件——批量上传:

    Get-ChildItem –Path [本地待上传的带通配符的文件路径,例如:d:data*] | Set-AzureStorageBlobContent -Container [容器名称] -Context [存储账号上下文]

    文件下载——下载容器中的文件到本地:

    Get-AzureStorageBlobContent -Blob [容器中待下载的文件名称] -Destination [本地目标路径] -Container [容器名称] -Context [存储账号上下文]

    至此,基本的网盘功能都已经实现了。不可否认,这的确是“only for technical guy”的。别忘了,咱可是玩技术的,基于Windows Azure的存储服务开发一个专用的网盘系统是不是变得很简单了?

    再来点高级的功能——网盘文件分享。

    Windows Azure Blob存储上的每一个文件都会对应一个唯一的URL,例如:[https://sa4blobtest.blob.core.chinacloudapi.cn/c001/demo-file.html]。理论上,把这个URL复制到浏览器中,就可以打开或者下载对应的文件了。但是,容器的权限默认是:Private,所以也就无法通过URL来分享文件了。除非我们把整个容器的权限设置为:Public Container。说句题外话,Public Container非常适合发布网站的静态内容,例如:css文件,JavaScript文件,图片等。并且还有很重要的一点:通过Windows Azure Blob发布的静态文件可以使用Windows Azure的CDN分发服务!这个的确是Windows Azure存储服务的一大特色。

    言归正传,我们来看看如何使用Windows Azure存储服务来实现文件分享。

    创建一个SAS key

    New-AzureStorageBlobSASToken -Context [存储账号上下文] Container [容器名称] -Blob [容器中待分享的文件名] -Permission r -FullUri

    上述命令执行后,会生成一个链接,例如:[https://sa4blobtest.blob.core.chinacloudapi.cn/c001/t01.css?sv=2015-02-21&sr=b&sig=FKeZ8ecCNXLSOOry90R%2FoiDUJwvn7W%2Fe
    w6%2BNfbAw6XM%3D&se=2015-11-17T09%3A47%3A05Z&sp=r]。这个链接就是分享链接!配合[-StartTime]和[-ExpiryTime]参数,还可以为分享链接设置有效期。是不是很感动?沿袭了微软开发工具的优良传统,时时处处为开发人员着想。

    到此为止,我们成功的把Windows Azure存储服务打造成为一个安全,高效,大容量的网盘。至于操作界面的用户体验嘛,让我们一起发挥想象力和创造力来慢慢完善吧。

  • 相关阅读:
    Vasya and Endless Credits CodeForces
    Dreamoon and Strings CodeForces
    Online Meeting CodeForces
    数塔取数 基础dp
    1001 数组中和等于K的数对 1090 3个数和为0
    1091 线段的重叠
    51nod 最小周长
    走格子 51nod
    1289 大鱼吃小鱼
    POJ 1979 Red and Black
  • 原文地址:https://www.cnblogs.com/hunterxue/p/4971765.html
Copyright © 2011-2022 走看看