我有一个使用库
的函数,当返回的数据audio
是缓冲区时,它可以正常工作:
PS:我不能将文件保存到系统-所以不能使用fs
(async function () { // Needed in my context
const stream = require('stream');
try {
function gettingFile(params) {
return new Promise((resolve, reject) => {
library.getFile(params, function(error, data) {
if (error) {
reject(error);
} else {
var base64data = data.Audio.toString('base64'); <----- getFile returns data as Buffer, so far so good
return resolve(base64data);
}
});
});
};
var retrievedBase64Data = await gettingFile(params);
callback(undefined, retrievedBase64Data);
} catch (err) {
callback(err)
}
})()
但是,库
最近发生了更改,data.audio
现在返回一个可读流,因此我尝试了这个操作,但会崩溃:
(async function() {
const stream = require('stream');
try {
function gettingFile(params) {
return new Promise((resolve, reject) => {
library.getFile(params, function(error, data) {
if (error) {
reject(error);
} else {
var fileStream = new stream.Writable();
data.Audio.pipe(fileStream); <-- getFile returns data as Readable Stream
var base64data = fileStream.toString('base64'); <-- I probably messed up.
return resolve(fileStream);
}
});
});
};
var retrievedBase64Data = await gettingFile(params);
callback(undefined, retrievedBase64Data);
} catch (err) {
callback(err)
}
})()
您知道如何使缓冲区
切换到流
吗?
(async function() {
const stream = require('stream');
try {
function gettingFile(params) {
return new Promise((resolve, reject) => {
library.getFile(params, function(error, data) {
if (error) {
reject(error);
} else {
const writeStream = fs.createWriteStream('audioName')
data.on('data',(chunk) => {
console.log('data received');
writeStream.write(chunk);
});
data.on('end', ()=>{
console.log('File saved!')
return resolve(writeStream)
});
data.on('error', ()=>{
console.log(err.stack);
});
}
});
});
};
var retrievedBase64Data = await gettingFile(params);
callback(undefined, retrievedBase64Data);
} catch (err) {
callback(err)
}
})()
下面的代码尝试使用缓冲区将WAV文件的头写入流,然后将其写入可写流。 出于某种原因,文件的前8个字节是错误的: 第一行应该是: 这条线路有故障: 它需要:
在Java 8中,我越来越多地用替换返回值。 所以我曾经有: 我现在使用: 我对此的论点是: 它强制执行基础列表的不变性。 它隐藏了存在基础列表的事实。之后可以将其更改为集合或其他结构,而无需更改方法签名 它很好地封装了该方法的用户希望对项进行处理,而不是对列表进行处理 如果需要,它可以在以后进行简单的并行化 事实上,现在,在我的代码中,返回<code>列表 显然,其中一些可以通过不可变集合来实现
问题内容: 我正在尝试读取(位于Javascript源的同一文件夹中)的内容,并使用以下代码显示它: 的内容创建于: 测试Node.js readFile() 我得到这个: 问题答案: 从文档: 如果未指定编码,则返回原始缓冲区。 这可能解释了。指定一个有效的编码,例如作为文件名之后的第二个参数。如,
问题内容: 在使用stream2接口之后,如何将node.js缓冲区转换为Readable流? 问题答案: 使用流化器,您可以使用新的流API将字符串和缓冲区转换为可读流。
我如何能转换一个node.js缓冲区到一个可读流以下使用Streum2接口? 我已经找到了这个答案和streambuffers模块,但是这个模块基于stream1接口。
问题内容: 我写了一个非常简单的函数,可以从给定的URL下载图像,调整图像大小并上传到S3(使用’gm’和’knox’),我不知道我是否在正确地将流读取到缓冲区中。(一切正常,但这是正确的方法吗?) 另外,我想了解一些有关事件循环的知识,如何知道该函数的一次调用不会泄漏任何内容,也不会将’buf’变量更改为另一个已经运行的调用(否则这种情况是不可能的,因为回调是匿名的功能?) 问题答案: 总的来说