我尝试使用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;
};
但我在我的前端得到了这个错误。
答案 0 :(得分:2)
通常,当我们遇到此问题时,这意味着sasToken内容与我们在Azure存储上请求的资源不匹配。
就我而言,你的代码运行正常。因此,请仔细检查您是否在Blob存储上创建了名为resources
的容器。
就我而言,当我将blob上传到Azure存储而没有先前创建的容器时,我只能重现您的问题。