在 Node.JS 中将 google 文件下载到内存
Download google file to memory in Node.JS
我正在尝试开发一个将 google 文件直接下载到内存中的功能。它适用于将其下载到文件中,但我想跳过该步骤并将内容保存在内存中。有人可以就如何将管道处理成字符串或缓冲区提供一些想法吗?下面是我的代码
function downloadFile(){
var fileId = "xxxxxx"
var testStr = ""//was trying to write it to a string
var dest = fs.createWriteStream(testStr);
drive.files.export({
auth: oauth2Client,
fileId: fileId,
mimeType: 'text/csv'
})
.on('end', function() {
console.log('Done Dowloading' + testStr);
})
.on('error', function(err) {
console.log('Error during download', err);
})
.pipe(dest);
dest.on('finish', function() {
dest.close((evt)=>{console.log(evt)}); // close() is async, call cb after close completes.
})
dest.on('error',function (err) {
console.log("error in pipe of dest \n" + err)
})
}
我试图将它下载到一个字符串中,但我不知道如何制作一个具有动态字节分配的缓冲区。回顾一下,它适用于将实际文件传递到 createWritableStream,但我希望它直接进入内存。
也许最简单的方法是使用像 stream-buffers
这样的模块将文件流替换为:
const streamBuffers = require('stream-buffers');
...
let dest = new streamBuffers.WritableStreamBuffer();
访问数据:
dest.on('finish', () => {
let data = dest.getContents();
...
});
我正在尝试开发一个将 google 文件直接下载到内存中的功能。它适用于将其下载到文件中,但我想跳过该步骤并将内容保存在内存中。有人可以就如何将管道处理成字符串或缓冲区提供一些想法吗?下面是我的代码
function downloadFile(){
var fileId = "xxxxxx"
var testStr = ""//was trying to write it to a string
var dest = fs.createWriteStream(testStr);
drive.files.export({
auth: oauth2Client,
fileId: fileId,
mimeType: 'text/csv'
})
.on('end', function() {
console.log('Done Dowloading' + testStr);
})
.on('error', function(err) {
console.log('Error during download', err);
})
.pipe(dest);
dest.on('finish', function() {
dest.close((evt)=>{console.log(evt)}); // close() is async, call cb after close completes.
})
dest.on('error',function (err) {
console.log("error in pipe of dest \n" + err)
})
}
我试图将它下载到一个字符串中,但我不知道如何制作一个具有动态字节分配的缓冲区。回顾一下,它适用于将实际文件传递到 createWritableStream,但我希望它直接进入内存。
也许最简单的方法是使用像 stream-buffers
这样的模块将文件流替换为:
const streamBuffers = require('stream-buffers');
...
let dest = new streamBuffers.WritableStreamBuffer();
访问数据:
dest.on('finish', () => {
let data = dest.getContents();
...
});