Nodejs 附件下载
在一些场景下,无论响应的内容是什么样的 MIME 值,需求中并不要求客户端去打开它,只需弹出并下载它即可。为了满足这种需求, Content-Disposition 字段应声登场。 Content-Disposition 字段影响的行为是客户端会根据它的值判断是应该将报文数据当做即时浏览的内容,还是可下载的附件。当内容只需即时查看时,它的值为 inline ,当数据可以存为附件时,它的值为 attachment 。另外, Content-Disposition 字段还能通过参数指定保存时应该使用的文件名。示例如下:
Content-Disposition: attachment; filename="filename.ext"
如果我们要设计一个响应附件下载的 API(res.sendfile),我们的方法大致是如下这样的:
const http = require('http') const url = require('url') const fs = require('fs') const server = http.createServer((req, res) => { const { pathname } = url.parse(req.url) if (pathname === '/') { const html = fs.createReadStream('./public/index.html') html.pipe(res) return } if (pathname === '/download') { fs.stat('./images/th.jpg', function (err, stat) { const stream = fs.createReadStream('./images/th.jpg') res.writeHead(200, { 'Content-Type': 'image/jpeg', 'Content-Length': stat.size, 'Content-Disposition': 'attachment; filename=th.jpg' }) stream.pipe(res) }); return } res.end('404') }) server.listen(8080, () => { console.log('port in 8080') })
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: Express 基本原理
下一篇: 不要相信一个熬夜的人说的每一句话
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论