I have been trying to upload an image to my blob container folder using postman,Below is the screenshot
Here is the link Authorization of Azure Storage service REST API am using to generate signature and am attaching filename file field in the body while body.
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;
I have used these 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
references for above code.
I have turned on cors also. Kindly share the solution as to how would i upload a jpg or png image to my blob using postman.
Thanks in advance
If we want to upload an image to the azure storage, please have a try to use the Put blob API not Put block API.
And have a try to use the following 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"
I test it on my side, it works correctly on site.
Headers :
Body:
Note: we could get the Content-Length from the file size.
Not really an answer to your question, but I see a number of issues that could cause this problem you're facing. Some of the issues I noticed are:
- Request URL does not include the name of the file you're uploading. Your request URL should be
https://colony7.blob.core.windows.net/folder-customer-profilepic/Home - explorar.jpg
.
- Content type request header is sent as
image/jpg
. However, in your stringToSign
it is set as image/jpeg; charset=UTF-8
. Both of them should exactly match.
- Content length header is missing in
stringToSign
.
- Based on the documentation here, your
stringToSign
corresponds to SharedKeyLite
however when creating the authorization header, you are using SharedKey
.
- Your
CanonicalizedHeaders
does not include x-ms-version
.
- If you intend to use
SharedKey
, then your stringToSign
should be constructed differently. Please see the documentation link you shared for more details.
Please fix these errors and update your question with the latest screenshots/values.