原生JS20行代码实现静态资源目录,以及文件打开即弹窗下载

96 阅读1分钟

前提条件

  • nodeJs

太简单了,我直接上代码加注释吧

import { createReadStream } from 'fs'
import { createServer } from 'http'

const server = createServer(async (req, res) => {
  // # 获取请求的url
  const url = req.url

  // # 识别是否访问了静态资源目录里的文件
  if (url?.includes('/public') && url !== '/public') {

    // # 设置响应头跨域
    res.setHeader('Access-Control-Allow-Origin', "*")

    // # 设置文件是打开查看,还是弹窗下载,自行查看mdn
    res.setHeader("Content-Disposition", "attachment;filename=$fname")

    // # 以流的形式读取文件(感觉这样加载比readfile快一点)
    const stream = createReadStream(`.${url}`)
    stream.pipe(res)
    return
  }
  // # 其它请求
  res.end('123123123')
})

server.listen(3000, () => console.log('服务打开'))

PS 把注释去掉就是20行了哈

image.png

最后来张养眼的

(12).jpg