Nodejs subiendo la imagen base64 a los resultados del almacenamiento de blobs azules en el error “ResourceNotFound”

Aquí está la solicitud de publicación JSON :

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

Y aquí está mi controlador de nodo bajo la ruta de solicitud /upload , estoy usando createBlockBlobFromText() de azure-storage .

 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); }); } 

Sin embargo estoy recibiendo este error.

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

Un par de cambios necesarios:

  • La fecha de vencimiento debe ser mayor que la fecha de inicio.
  • La firma de acceso compartido debe usar el mismo nombre de contenedor.
  • la firma de acceso compartido se debe pasar en nombre de archivo, no en contenido de archivo.

Después de estos cambios, el código sería similar a este:

 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); });