Node.js Azure blob sasToken“;签名不匹配";

Node.js Azure blob sasToken“;签名不匹配";,node.js,azure,azure-storage,azure-storage-blobs,Node.js,Azure,Azure Storage,Azure Storage Blobs,我试图使用createBlockBlobFromLocalFile将图像上载到azure blob存储。我创建了sasToken,就像azure存储节点所指示的那样。这是我上传的代码 module.exports = function(params) { var config = require('../../config/secrets'); var fs = require('fs'); var azure = require('azure-storage'); var controlle

我试图使用
createBlockBlobFromLocalFile
将图像上载到azure blob存储。我创建了sasToken,就像azure存储节点所指示的那样。这是我上传的代码

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;

};
但是我的前端出现了这个错误

编辑 响应消息

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

在我这方面,你的代码运行得很好。因此,请仔细检查您是否已在Blob存储上创建了名为
resources
的容器


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

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

在我这方面,你的代码运行得很好。因此,请仔细检查您是否已在Blob存储上创建了名为
resources
的容器


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

这是一个非常有用的注释,我会仔细检查所有内容,然后再联系你。你好,gary,我确保
资源
容器存在,但它仍然存在相同的问题。你的
azure存储
lib版本是什么,测试文件名是什么?azure存储版本是最新的,文件名只是
images.jpg
@TheGreenFoxx,我建议您可以尝试使用list blob函数()检查SAS错误。如果您遇到相同的错误,可能是您的SAS有问题,或者您的容器有权限?这是一个非常有用的说明,我将仔细检查所有内容,然后再与您联系。您好gary我确保
资源
容器存在,但它仍然有相同的问题。您的
azure存储
lib版本是什么,您的测试文件名是什么?azure存储的
版本是最新的,文件名只是
图像。jpg
@TheGreenFoxx,我建议您可以尝试使用list blob函数()检查SAS错误。如果您遇到相同的错误,可能是您的SA有问题,或者您的容器有权限?