我正在使用此package将文件从azure下载到本地节点服务器。但我不想将文件保存在本地服务器然后读取它转换为base64,我想直接将其转换为base64。我怎样才能做到这一点?
this.blobService.getBlobToStream('pictures', path, fs.createWriteStream(`./src/temp/${filename}.jpeg`), function(error, result, response) {
if (!error) {
resolve({ message: `Items in container pictures:`, data: result});
} else {
reject(error);
}
});
答案 0 :(得分:1)
内置节点仅支持ecnode Buffer
类型为base64
,因为您不想将Blob下载到本地服务器,您必须使用外部模块对{{1}进行编码}。
stream
然后使用下面的代码。
npm install base64-stream
请注意,在later question中,您使用
指定var base64 = require('base64-stream');
...
this.blobService.createReadStream(container, path).pipe(base64.encode()).pipe(res);
Content-Type
应省略 res.header('Content-Type', properties['contentType']);
设置。在我的测试中,如果成功设置Content-Type
,图像将作为附件下载,而不是显示为内联内容。您的代码成功,因为它实际上将Content-Type
设置为Content-Type
。
您使用的属性是带有blob信息的BlobResult(Json格式)
undefined
所以BlobResult {
container: xxx,
...
contentSettings:
{ contentType: 'image/jpg',
contentMD5: 'uNkt2WJ75X13TjQbfY7qkA==' },
...
}
应使用此格式contentType