【发布时间】:2018-09-21 19:56:03
【问题描述】:
Google API 的 Node.js 示例包含此内容(用于服务器代码)。这是来自 Google 在 GitHub 上的示例,此处为目的而进行了简化:
const audio = {
content: fs.readFileSync(filename).toString('base64'),
};
const request = {
audio: audio,
};
return client
.longRunningRecognize(request)
.then(
...
})
这让我很吃惊(因为我认为异步是 Node.js 服务器代码的标准)。我想知道我是否可以用fs.readFile 替换它(这是异步版本)。
编辑:以上部分似乎至少部分由简单的“是”回答,谢谢。但我不明白如何修复 base64 部分(并避免内存中有大文件)。
但是,我真正想做的是将带有套接字的文件流式传输到此 API。我可以这样做吗(如果我为如何做足够长的时间而苦恼……)?
编辑:我会很感激这里使用套接字的一些例子。如何流式传输到类似上述结构的内容?
编辑 2:有一个库 socked-io.file,但我不知道如何将其放入上面的 API 接口中。可以吗?
编辑 3:在我拥有该文件的 API 代码中,该文件已经在服务器上,但我想上传该文件。 (很抱歉造成混乱。)
【问题讨论】:
-
是的。是的,你可以。
-
这是关于整个帖子的。你问的问题可以用 nodejs 来完成。
-
是的。因为
readFile不返回任何东西。如果您要转身并流式传输内容,也值得关注nodejs.org/api/fs.html#fs_class_fs_readstream。 -
fs.readFile()不会“避免内存中有大文件”。也许你指的是fs.createReadStream()?
标签: javascript node.js asynchronous websocket google-cloud-platform