Nodejs 附件下载

发布于 2025-01-26 08:17:34 字数 1150 浏览 6 评论 0

在一些场景下,无论响应的内容是什么样的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

情绪失控

暂无简介

文章
评论
489 人气
更多

推荐作者

5576443447

文章 0 评论 0

酒几许

文章 0 评论 0

xiaolangfanhua

文章 0 评论 0

好久不见√

文章 0 评论 0

盗心人

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文