我正在尝试使用Azure作为数据存储,使用Node和Express进行文件共享应用。
我正在努力展示我的容器的子文件夹。
我的代码如下所示:
我创建了这样的子文件夹,目的是隐藏'$$$。$$$' - 文件:
app.post('/folderhandler', function (req, res) {
var containerName = req.query.id;
var folderName = req.body.folderName;
var folder = folderName + '/$$$.$$$';
blobSvc.createBlockBlobFromText(
containerName,
folder,
'Hello, World!',
function (error, result, response) {
if (error) {
console.log("Couldn't upload string");
console.error(error);
} else {
console.log('String uploaded successfully');
}
});
res.redirect('/container/' + containerName);
});
然后我尝试在我的displayBlobs函数中使用新的'Subfolder'作为'container'变量。但这不起作用:
app.get('/container/:containername/:subcontainer', function (req, res) {
var containerName = req.params.containername;
var subContainer = req.params.subcontainer;
blobSvc.listContainersSegmented(null, function (err, containers) {
blobSvc.listBlobsSegmented(subContainer, null, function (error, blobs) {
res.render('manager.ejs', {
error: error,
title: 'Manager ' + containerName,
pageID: 'containers',
containername: subContainer,
listContainers: containers.entries,
listBlobs: blobs.entries,
breadcrumbs: [{
href: '/manager',
text: 'Manager'
}, {
href: '/container/' + containerName,
text: containerName
}, {
text: subContainer,
active: true
}]
});
});
});
});
我想我已经尝试了一切,所以我愿意接受建议:)
答案 0 :(得分:1)
也许你在函数listBlobsSegmented(container, currentToken [, options], callback)
中犯了一个错误,第一个参数应该是容器名,而不是子文件夹名。
如果要在子文件夹中显示blob项,请改用函数listBlobsSegmentedWithPrefix(container, prefix, currentToken [, options], callback)
,然后将子文件夹名称作为第二个参数prefix
传递。