📅  最后修改于: 2023-12-03 14:41:04.956000             🧑  作者: Mango
在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()
函数时,要确保提供的文件路径是安全的,以防止任意文件的泄漏或攻击。