Azure blob sasToken“签名不匹配”

时间:2016-03-28 13:12:30

标签: node.js azure azure-storage azure-storage-blobs

我尝试使用createBlockBlobFromLocalFile将图像上传到azure blob存储区。我创建了 sasToken ,就像 azure-storage-node 指示here一样。这是我的上传代码。

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;

};

但我在我的前端得到了这个错误。

enter image description here

修改 响应消息 enter image description here

1 个答案:

答案 0 :(得分:2)

通常,当我们遇到此问题时,这意味着sasToken内容与我们在Azure存储上请求的资源不匹配。

就我而言,你的代码运行正常。因此,请仔细检查您是否在Blob存储上创建了名为resources的容器。

就我而言,当我将blob上传到Azure存储而没有先前创建的容器时,我只能重现您的问题。