2017-10-19 106 views
0

我一直在试图使用邮递员的图像上传到我的blob容器文件夹,下面是截图 postman screenshot如何使用邮递员到Azure 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-blockhttps://docs.microsoft.com/en-us/rest/api/storageservices/authentication-for-the-azure-storage-services 引用。

我也打开了cors。请分享解决方案,我将如何上传一个JPG或PNG图像到我的BLOB使用邮递员。

在此先感谢

+0

没有直接回答你的问题,但你尝试过Azure存储资源管理器? https://azure.microsoft.com/en-ca/features/storage-explorer/ – CSharpRocks

+0

你为什么要与S3标记呢? –

回答

2

如果我们想上传到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

+0

有没有一种方法可以在不使用内容长度标题的情况下上传,因为它受到限制? –

+0

我如何通过Ajax请求天青,当我试图把它在发送数据的0bytes数据发送二进制PNG文件 –

+0

'有没有办法可以在不使用内容长度标题,因为它限于'据载[把一滴API](https://docs.microsoft.com/en-us/rest/api/storageservices/put-blob),需要'内容Length'报头。 –

1

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

  1. 请求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应构造不同。请参阅您分享的文档链接了解更多详细信息。

请修正这些错误,并与最新截图/值来更新你的问题。