📜  Express.js res.sendFile()函数(1)

📅  最后修改于: 2023-12-03 14:41:04.956000             🧑  作者: Mango

Express.js res.sendFile()函数

在Express.js中,res.sendFile()函数用于向客户端发送文件作为响应。它可以用于发送任何类型的文件,包括HTML、CSS、JavaScript、图像、视频和其他媒体文件。

语法
res.sendFile(path [, options] [, callback])

path参数表示要发送的文件的路径。它可以是绝对路径或相对于当前工作目录的相对路径。

options参数是一个可选的对象,其中可以包含以下属性:

  • root:指定从何处查找文件的根目录。默认为当前工作目录。
  • headers:一个对象,用于设置响应的HTTP标头。
  • dotfiles:设置是否允许发送包含点文件(以.开头的文件)。默认为 "ignore",还可设置为 "allow""deny"
  • lastModified:设置响应的 "Last-Modified" 标头为提供的值。
  • immutable:设置响应的 "Immutable" 标头。如果设置为 true,则客户端将缓存该文件,无需再次请求。
  • etag:设置文件的 "ETag" 标头。

callback参数是一个可选的回调函数,用于在文件发送完成后执行一些操作。

示例

以下示例演示了如何使用res.sendFile()函数发送一个HTML文件作为响应:

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.sendFile('/path/to/index.html');
});

app.listen(3000, () => {
  console.log('Server started on port 3000');
});

上述示例中,当客户端请求根路径时,服务器将发送index.html文件作为响应。

注意事项
  • res.sendFile()函数会默认设置Content-Type标头,根据文件扩展名自动推断内容类型。如果您想自定义Content-Type标头,请在options对象中设置headers属性。
  • 由于res.sendFile()函数通过HTTP发送文件,因此它主要适用于发送较小的文件。对于大文件,最好使用专门的文件服务器或云存储服务。
  • 当使用sendFile()函数时,要确保提供的文件路径是安全的,以防止任意文件的泄漏或攻击。
参考资料