文件下载如何实现
服务端代码:
const express = require('express');const path = require('path');const router = express.Router()router.get('/:filename', (req, res) => {const filePath = path.resolve(__dirname, '../../down', req.params.filename)res.download(filePath, req.params.filename)})module.exports = router;
const express = require('express');const app = express();// 文件下载app.use('/api/download', require('./api/clientDown'))
服务器的响应头
这些画圈都是啥
Accept-Ranges:bytes
Content-Disposition:attachment; filename=”2.jpg”
attachment翻译过来就是附件,这句话就是浏览器以附件的形式下载文件,默认保存的文件名为2.jpg
Content-Length:12361649
Content-Type:image/jpeg
断点续传
迅雷下载协议
把完整的下砸地址拿到
AA下载地址ZZ
进行base64编码
thunder://base64编码
代码实现
<body><a resrole="thunder" href="/api/download/2.zip">下载</a><!-- 迅雷下载协议把完整的下载地址得到AA地址ZZbase64编码thunder://base64编码--><script>const a = document.querySelector("a[resrole=thunder]");let thunderLink = `AA${a.href}ZZ`;thunderLink = btoa(thunderLink); // base-64 编码thunderLink = "thunder://" + thunderLink;a.href = thunderLink;</script></body>
断点续传的请求头
range:’bytes=8545332-12361648’
这个会告诉服务器我会下载那一部分的字节,当暂停下载客户端会记录这请求头的值,当恢复下载在将这个请求头发送给服务器,这就是断点续传

