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有问题,或者您的容器有权限?