前言:
此时你们对“c语言断点什么意思”都比较关心,大家都需要学习一些“c语言断点什么意思”的相关知识。那么小编在网摘上搜集了一些关于“c语言断点什么意思””的相关文章,希望我们能喜欢,咱们快快来了解一下吧!框架
语言:nodejs 包:express fs
目的
通过nodejs实现一个大文件的断点下载的服务。
代码
由于没啥复杂的,这里直接上代码。 http断点下载是通过range来判断文件的起始位置的。其基本原理就是,在文件的下载断开以后。客户端继续向服务器端请求的时候,http请求的头文件中会多了一个参数“Range”,来标示当前下载的文件所断开的位置。
const express = require('express');const fs = require('fs');let app = express();app.get('/', (req, res, next) => { let range = req.headers["range"];// 下载文件路径let p = 'workspace.rar';// 存在 range 请求头将返回范围请求的数据if (range) { // 获取范围请求的开始和结束位置 let [, start, end] = range.match(/(\d*)-(\d*)/); // 错误处理 let statObj = null; try { statObj = fs.statSync(p); } catch (e) { res.end("Not Found"); } // 文件总字节数 let total = statObj.size; // 处理请求头中范围参数不传的问题 start = start ? parseInt(start) : 0; end = end ? parseInt(end) : total - 1; // 响应客户端 res.statusCode = 206; res.setHeader("Accept-Ranges", "bytes"); res.setHeader("Content-Range", `bytes ${start}-${end}/${total}`); fs.createReadStream(p, { start, end }).pipe(res);} else { // 没有 range 请求头时将整个文件内容返回给客户端 fs.createReadStream(p).pipe(res);}}) app.listen(3000, () => {console.log(`server is running at port 3000`) })测试
可以通过wget命令来测试,-c是启用断点下载。
wget -c -d --limit-rate=2048k -O target ";
由于只是一个demo,用来做下载测试的,所以用nodejs做了个简单的,线上的话还是不要用这个了,有很多方案可以解决。
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #c语言断点什么意思