如何在不保存本地的情况下将base64数据转换为可读的图像stream

我正在使用Node.js处理Microsoft Bot Framework(在Azure上托pipe),本地保存文件不是一个选项。 我有base64格式的图像数据,我需要将这些数据转换成一个可读的图像文件stream,我可以使用它们的Blob存储API(需要一个stream)将其传输到Azure中。

var base64ImageData; //my base64 image //Create myStream here //Then send to Azure blobService.createBlockBlobFromStream('mycontainer', nameForBlob, myStream, fileSize, function (error, result, response){ if(!error) console.log(response); else console.log(error) }); 

任何帮助,将不胜感激。 我无法弄清楚如何解码base64,并从中创build一个stream,而不会将jpg保存到我的磁盘上。

请尝试这样的事情:

 var azureStorage = require('azure-storage'); var streamifier = require('streamifier'); var base64String = 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEiSURBVDhPxZIhT0NBEITnoBKBrEQgEUhISEiqKiFUYJDI/gBEc8VVY5AYHKKGBIEAVBFN+A8EUVFZUdGk/XbvGtqmpS8ImGTu5vbd7N3tPv0Pog5gzeSGB4oiqgSbCnphNbRQsKEQorbY/YCqaqwrXatl4WIJosrsfELtw3vucOFxsP4J6eRnlJnfOf3S4xk/J0hmO3kPfmE+5er+9ilSAqtoU203TGEFC7pDHcFBNvf82wxSgqAzxhPmDsbdHLtl9FZhbmDuul5AKmLUNuoDtQMH8BGeQ0OXBIckGOX1HL67ELlq6m8pBRyjbF56umEzz9KbPnXM9qBKjhhuMFsdVmKxC/ZzvCbpVW9kvRLzCeydY/9J+sx11laPXyB63/8C0gQlpj3Fc3O2WAAAAABJRU5ErkJggg=='; var blobService = azureStorage.createBlobService('account-name', 'account-key'); var buffer = Buffer.from(base64String, 'base64'); var stream = streamifier.createReadStream(buffer); blobService.createBlockBlobFromStream('container-name', 'checked.png', stream, buffer.byteLength, function(error, response) { if (error) { console.log('Error!'); console.log(error); } else { console.log('Blob uploaded successfully!'); console.log(response); } }); 

我不得不安装streamifier节点包来将缓冲区转换为stream。