2016-03-28 2 views
0

J'essayais de télécharger une image dans un espace de stockage azuré en utilisant createBlockBlobFromLocalFile. Et j'ai créé le sasToken comme ce azure-storage-node chargé here. Voici mon code pour le téléchargement.Azure blob sasToken "La signature ne correspond pas"

module.exports = function(params) { 

var config = require('../../config/secrets'); 
var fs = require('fs'); 
var azure = require('azure-storage'); 
var controllers = {}; 

var blobSvc = azure.createBlobService(config.BLOB_LINK, config.BLOB_KEY); 


controllers.upload = function (req, res, next){ 

    var fstream; 
    req.pipe(req.busboy); 

    var startDate = new Date(); 
    var expiryDate = new Date(startDate); 
    expiryDate.setMinutes(startDate.getMinutes() + 100); 
    startDate.setMinutes(startDate.getMinutes() - 100); 

    var sharedAccessPolicy = { 
     AccessPolicy: { 
      Permissions: azure.BlobUtilities.SharedAccessPermissions.WRITE, 
      Start: startDate, 
      Expiry: expiryDate 
     } 
    }; 

    req.busboy.on('file', function (fieldname, file, filename) { 

     fstream = fs.createWriteStream(__dirname + '/upload/' + filename); 
     file.pipe(fstream); 
     fstream.on('close', function() { 

      var sharedAccessSignatureToken = blobSvc.generateSharedAccessSignature('resources', filename, sharedAccessPolicy); 
      var sharedBlobService = azure.createBlobServiceWithSas(blobSvc.host, sharedAccessSignatureToken); 
      console.log("sas", sharedAccessSignatureToken); 

      sharedBlobService.createBlockBlobFromLocalFile(
        'resources', 
        filename, 
        fstream.path, 
        function(error, result, response) { 
         if (error) { 
          res.send(error); 
          return; 
         } 
         res.send(result); 
        }); 
     }); 
    }); 
} 

return controllers; 

}; 

Mais Im obtenir cette erreur sur mon frontend.

enter image description here

EDIT message de réponse enter image description here

Répondre

2

En général, quand on se produit cette question, ce qui signifie que le contenu sasToken doesnt correspondent à la ressource que nous demandons sur Azure Storage.

Et de mon côté, votre code fonctionne bien. Donc s'il vous plaît vérifiez si vous avez créé le conteneur nommé resources sur votre stockage de blob. Comme de mon côté, je peux seulement reproduire votre problème lorsque je télécharge un blob vers Azure Storage sans qu'un conteneur ait été créé précédemment.

+0

Ceci est une note très utile, je vais tout vérifier et ensuite je reviens vers vous. – CENT1PEDE

+0

Bonjour gary J'ai fait en sorte que le conteneur 'resources' existe mais il a toujours le même problème. – CENT1PEDE

+0

Quelle est votre version de 'azure-storage' lib, et quel est votre nom de fichier de test? –