微软Azure云存储快速开发

快速入门:使用 Java 存储 SDK V10 上传、下载和列出 Blob

本快速入门介绍如何使用新的 Java 存储 SDK 上传、下载和列出 Azure Blob 存储的容器中的块 Blob。 新的 Java SDK 将响应式编程模型与 RxJava 配合使用,提供异步操作。 详细了解 RxJava 的 Java VM 响应式扩展。

先决条件

若要访问 Azure 存储,需要一个 Azure 订阅。 如果还没有订阅,则请在开始前创建一个免费帐户。

对 Azure 存储进行的所有访问都要通过存储帐户完成。 如果还没有存储帐户,可使用 Azure 门户轻松创建一个。 也可以使用 Azure PowerShell 或 Azure CLI 创建存储帐户。 有关如何创建帐户的帮助,请参阅创建存储帐户。

请确保已安装下述额外的必备组件:

  • 可以通过命令行使用的 Maven,或者任何首选的 Java 集成开发环境。
  • JDK

下载示例应用程序

本快速入门中使用的示例应用程序是基本的控制台应用程序。

使用 git 可将应用程序的副本下载到开发环境。

git clone https://github.com/Azure-Samples/storage-blobs-java-v10-quickstart.git

此命令会将存储库克隆到本地 git 文件夹。

项目导入完以后,请打开位于 src/main/java/quickstart 中的 Quickstart.java

该demo里面包含了增删改查的所有方法,也是比较全面的,看官方文档就可以实现,接下来就SAS令牌的获取讲几句我遇到的坑;

由于我没有门户的账号和密码,所有有诸多不便,如果有门户账号的勿鄙视,下面介绍一下获取account SAS我的实现;

1、字符串拼接

String stringToSign =  accountName +"\n"
                      + sp + "\n"
                      + ss + "\n"
                      + srt+ "\n"
                      + st + "\n"
                      + se + "\n"
                      + si + "\n"
                      + spr +"\n"
                      + sv + "\n"

注意点,固定格式,一个都不能少,就算传入参数为空,也要按这个格式拼接;

2、签名加密,组成sasToken

String signature = getHMAC256(accountKey, stringToSign);
sasToken = "sp="+sp+"&ss="+ss+"&srt="+srt+"&st="+st+"&se="+ se+"&spr="+spr+"&sv="+sv +"&sig=" +
       URLEncoder.encode(signature, "UTF-8");

3、拼接成请求字符串

resultToken = "BlobEndpoint="+containerUrl+"/;"+"SharedAccessSignature="+sasToken+";";

public  String getHMAC256(String key, String input) {
    Mac sha256_HMAC = null;
    String hash = null;
    try {
        sha256_HMAC = Mac.getInstance("HmacSHA256");
        sha256_HMAC.init(new SecretKeySpec(Base64.getDecoder().decode(key), "HmacSHA256"));
        byte[] utf8Bytes = input.getBytes("UTF-8");
        hash =  Base64.getEncoder().encodeToString(sha256_HMAC.doFinal(utf8Bytes));
    } catch (InvalidKeyException e) {
        e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    return hash;
}

如果出现SAS不可用的现象,基本就是签名连接字符串和签名算法这两点问题的原因;

 

参考文件:

https://docs.microsoft.com/zh-cn/azure/storage/blobs/storage-quickstart-blobs-java-v10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

参考文章:

  • https://docs.microsoft.com/en-us/rest/api/storageservices/Authentication-for-the-Azure-Storage-Services
  • https://docs.microsoft.com/en-us/azure/storage/storage-dotnet-shared-access-signature-part-1
  • https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-sas
  • https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-security

你可能感兴趣的:(微软Azure云存储快速开发)