我正在尝试以分块的方式将非常大的文件上传到服务器。服务器端工作得很好。在我想出的函数中,它尝试一次性上传所有文件。我对async/await不熟悉,不确定该如何继续进行。目标是逐个以块的形式上传。
请注意,我从一个类中剥离了这段代码,以增加清晰度并删除了所有不必要的部分。
使用node-fetch添加fetch()功能。
感谢任何帮助或建议:)
let tree = []
const start = () => {
scan('/foo/bar', err => {
tree.forEach(file => {
upload(file)
})
})
}
const scan = dir => { ... } // assigns array of files to tree
const upload = file => {
const stream = fs.createReadStream(file)
stream.on('data', async chunk => {
stream.pause()
try {
let response = await fetch('https://some/endpoint', {
method: 'post',
body: JSON.stringify({
file: file,
chunk: chunk.toString('base64')
})
})
stream.resume()
} catch(e) {
// handle errors
}
})
stream.on('end', () => {
console.log('end', file)
})
stream.on('error', err => {
console.log('error', err)
})
}