如何解决通过块 Node.js 从 Google Cloud Storage GCS 下载文件
这个想法是按块从GCS下载文件,我想控制块大小。 对于普通的 fs.createReadStream() 选项 highWaterMark 应该使用。就像在 here 中一样。 但是对于@google-cloud/storage,根据GCS doc Bucket.File.createReadStream 没有 highWaterMark 选项。 任何想法如何做到? 谢谢
const {Storage} = require('@google-cloud/storage');
const storage = new Storage({keyFilename});
function downloadStream() {
async function downloadStream() {
const fs = require('fs');
var cnt = 0;
const file = storage.bucket(bucketName).file(gcDestFileName);
file.createReadStream({highWaterMark: 16000 })
.on('data',function (chunk) {
console.log(">>> " + cnt + " downloadStream() on data: chunk.length: " + chunk.length +
" chunk.byteLength: " + chunk.byteLength +
" chunk.offset: " + chunk.offset +
" chunk.byteOffset: " + chunk.byteOffset + "\n"
);
})
.pipe(fs.createWriteStream(localDestFileName)
);
console.log(
`gs://${bucketName}/${fileName} downloaded to ${localDestFileName}.`
);
}
downloadStream().catch(console.error);
}
Log for file 126,976 bytes:
>>> 1 downloadStream() on data: chunk.length: 502 chunk.byteLength: 502 chunk.offset: 814 chunk.byteOffset: 814
>>> 2 downloadStream() on data: chunk.length: 1316 chunk.byteLength: 1316 chunk.offset: 0 chunk.byteOffset: 0
...
>>> 96 downloadStream() on data: chunk.length: 1316 chunk.byteLength: 1316 chunk.offset: 0 chunk.byteOffset: 0
>>> 97 downloadStream() on data: chunk.length: 525 chunk.byteLength: 525 chunk.offset: 0 chunk.byteOffset: 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。