【问题标题】:How to upload images using postman to azure blob storage如何使用邮递员将图像上传到 azure blob 存储
【发布时间】:2018-03-31 18:58:34
【问题描述】:

我一直在尝试使用邮递员将图像上传到我的 blob 容器文件夹 这是链接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-block,https://docs.microsoft.com/en-us/rest/api/storageservices/authentication-for-the-azure-storage-services 以上代码参考。

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

提前致谢

【问题讨论】:

标签: azure rest blob azure-blob-storage binaryfiles


【解决方案1】:

如果我们要上传图片到天蓝色存储,请尝试使用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"   

我自己测试过,它在现场可以正常工作。

标题:

主体:

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

【讨论】:

  • 有什么方法可以在不使用内容长度标头的情况下上传吗?
  • 我如何通过 ajax 请求将二进制 png 文件发送到 azure,当我尝试发送数据时它正在发送 0 字节的数据
  • Is there a way i can upload without using content length header as it is restricted 根据Put blob APIContent-Length 是必需的。
  • how do i send binary png file via ajax request to azure, When i tried to send data it was sending 0bytes of data 请尝试创建一个新线程,因为这是另一个问题。还请在另一个线程中提供更多信息,例如演示代码、错误信息和屏幕截图等。
【解决方案2】:

不是您的问题的真正答案,但我看到了许多可能导致您面临此问题的问题。我注意到的一些问题是:

  1. 请求 URL 不包含您正在上传的文件的名称。您的请求 URL 应为 https://colony7.blob.core.windows.net/folder-customer-profilepic/Home - explorar.jpg
  2. 内容类型请求标头以image/jpg 发送。但是,在您的stringToSign 中,它被设置为image/jpeg; charset=UTF-8。两者应该完全匹配。
  3. stringToSign 中缺少内容长度标头。
  4. 根据此处的文档,您的stringToSign 对应于SharedKeyLite,但是在创建授权标头时,您使用的是SharedKey
  5. 您的CanonicalizedHeaders 不包括x-ms-version
  6. 如果您打算使用SharedKey,那么您的stringToSign 应该以不同的方式构造。请查看您分享的文档链接了解更多详情。

请修复这些错误并使用最新的屏幕截图/值更新您的问题。

【讨论】:

    【解决方案3】:
    1. 方法:PUT

    2. 网址方案:

      (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. 正文:选择二进制添加图像 (标头和网址中的图片名称应相同。)

    【讨论】:

      猜你喜欢
      • 2020-01-25
      • 2018-12-17
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      • 2020-01-09
      • 2014-07-22
      • 2020-02-23
      • 2019-10-01
      相关资源
      最近更新 更多