Nodejs上传base64图像到azure blob存储结果为“ResourceNotFound”错误

这是发布请求JSON

 { "name":"images.jpg", "file":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxQTEhIUEhIUFBUV…K9rk8hCAEkjFMUYiEAI+nHIpsQh0AkisDYRTOiCAbWVtgCtI6IlkHh7LDTQXLH0EIQBj//2Q==" } 

这里是我的节点控制器在请求/upload路线下,我使用azure存储的 createBlockBlobFromText()

 var azure = require('azure-storage'); var blobSvc = azure.createBlobService('myblob.blob.core.windows.net/mycontainer', THE_KEY); controllers.upload = function (req, res, next){ var startDate = new Date(); var expiryDate = new Date(startDate); var sharedAccessPolicy = { AccessPolicy: { Permissions: azure.BlobUtilities.SharedAccessPermissions.WRITE, Start: startDate, Expiry: expiryDate } }; var sharedAccessSignatureToken = blobSvc.generateSharedAccessSignature('resources', req.body.file, sharedAccessPolicy); var sharedBlobService = azure.createBlobServiceWithSas(blobSvc.host.primaryHost + '/' + 'mycontainer' + '?' + sharedAccessSignatureToken); sharedBlobService.createBlockBlobFromText('mycontainer', req.body.name, req.body.file, function(error, result, response) { if (error) { res.send(error); return; } res.send(result); }); } 

但是我得到这个错误。

 { "code": "ResourceNotFound", "statusCode": 404, "requestId": "bffa6099-0001-000b-53f9-80d18a000000" } 

需要的变化夫妇:

  • 到期date应该大于开始date。
  • 共享访问签名应该使用相同的容器名称。
  • 共享访问签名应该以文件名传递,而不是文件内容。

这些更改后,代码将类似于此:

 var sharedAccessSignatureToken = blobSvc.generateSharedAccessSignature('mycontainer', req.body.name, sharedAccessPolicy); var sharedBlobService = azure.createBlobServiceWithSas(blobSvc.host, sharedAccessSignatureToken); sharedBlobService.createBlockBlobFromText('mycontainer', req.body.name, req.body.file, function(error, result, response) { if (error) { res.send(error); return; } res.send(result); });