nodejs断点下载文件
时间: 2023-11-28 08:46:05 浏览: 69
以下是使用Node.js实现断点下载文件的示例代码:
```javascript
const http = require('http');
const fs = require('fs');
const path = require('path');
const fileUrl = 'http://example.com/file.zip';
const filePath = path.join(__dirname, 'file.zip');
const tempFilePath = filePath + '.download';
let startByte = 0;
if (fs.existsSync(tempFilePath)) {
startByte = fs.statSync(tempFilePath).size;
}
const options = {
headers: {
Range: `bytes=${startByte}-`
}
};
const file = fs.createWriteStream(tempFilePath, { flags: 'a' });
http.get(fileUrl, options, (res) => {
const totalSize = parseInt(res.headers['content-length']) + startByte;
res.pipe(file);
res.on('data', (chunk) => {
const downloadedSize = startByte + file.bytesWritten;
console.log(`Downloaded ${downloadedSize} bytes of ${totalSize}`);
// 下载完成
if (downloadedSize === totalSize) {
fs.renameSync(tempFilePath, filePath);
console.log(`File downloaded to ${filePath}`);
}
});
});
```
这段代码使用了HTTP Range头来实现断点下载,如果之前已经下载过一部分文件,则会从上次下载的位置继续下载。下载完成后,会将临时文件重命名为最终文件名。
阅读全文