如何使用邮差将图像上传到azure blob存储

时间:2017-10-19 16:47:07

标签: rest azure blob azure-storage-blobs

我一直在尝试使用邮递员将图片上传到我的blob容器文件夹,下面是截图 postman screenshot

以下链接Authorization of Azure Storage service REST API用于生成签名,并在正文中附加文件名文件字段。

var key = "[Storage account key]";
var strTime = (new Date()).toUTCString();
var strToSign = 'PUT\n\nimage/jpeg; charset=UTF-8\n\nx-ms-date:' + strTime + '\nx-ms-meta-m1:v1\nx-ms-meta-m2:v2\n/colony7/folder-customer-profilepic/Home - explorar.jpg';
var secret = CryptoJS.enc.Base64.parse(key);
var hash = CryptoJS.HmacSHA256(strToSign, secret);
var hashInBase64 = CryptoJS.enc.Base64.stringify(hash);
var auth = "SharedKey colony7:"+hashInBase64; 

我使用了这些https://docs.microsoft.com/en-us/rest/api/storageservices/put-blockhttps://docs.microsoft.com/en-us/rest/api/storageservices/authentication-for-the-azure-storage-services  以上代码的参考资料。

我也打开了角色。请分享关于如何使用邮递员将jpg或png图像上传到我的blob的解决方案。

提前致谢

3 个答案:

答案 0 :(得分:3)

如果我们想将图片上传到azure存储空间,请尝试使用Put blob API Put block API。

并尝试使用以下strToSign。

"PUT\n\n\n{Content-Length}\n\n{Content-Type}\n\n\n\n\n\n\nx-ms-blob-type:BlockBlob\nx-ms-date:{date}\nx-ms-version:2015-12-11\n/accountname/container/blobname"   

我在我身边测试它,它在现场正常工作。

标题:

enter image description here

体:

enter image description here

注意:我们可以从文件大小中获取Content-Length。

enter image description here

答案 1 :(得分:2)

对你的问题不是一个真正的答案,但我看到一些可能导致你面临这个问题的问题。我注意到的一些问题是:

  1. 请求网址不包含您要上传的文件的名称。您的请求网址应为https://colony7.blob.core.windows.net/folder-customer-profilepic/Home - explorar.jpg
  2. 内容类型请求标头以image/jpg的形式发送。但是,在stringToSign中,它设置为image/jpeg; charset=UTF-8。两者都应完全匹配。
  3. stringToSign中缺少内容长度标题。
  4. 根据此处的文档,您的stringToSignSharedKeyLite相对应,但在创建授权标题时,您使用的是SharedKey
  5. 您的CanonicalizedHeaders不包括x-ms-version
  6. 如果您打算使用SharedKey,那么您的stringToSign应该以不同方式构建。有关更多详细信息,请参阅您共享的文档链接。
  7. 请修正这些错误并使用最新的屏幕截图/值更新您的问题。

答案 2 :(得分:1)

  1. 方法:PUT

  2. URL方案:

    (https://{{storageName}}.blob.core.windows.net/{{Container}}/{{ImageName.png}}?{{SAS Token}})
    
  3. 标题:

    "Content-Type": "image/png",
    "Content-Length": "{{size in Bytes}}",
    "x-ms-blob-type": "BlockBlob"
    
  4. 正文:选择二进制添加图像 (图片名称在标题和URL中应该相同。)