4

我对 Express 如何提供文件有点困惑。

目前我有一个/public目录来保存客户端资源。我使用配置 Express

app.use(express.static(__dirname + '/public'));

我的印象是该目录中的任何内容都是公开的,并且 HTTP 方法 URL 默认/public为访问的根目录(除非由 Express 手动路由)。

在此目录中的任何文件(客户端脚本、图像等)上使用 GET 都没有问题。但是,当我尝试在此目录中发布文件时,我得到 404。我需要手动路由所有 POST 请求吗?

app.post(route, callback)

谢谢你的帮助

4

3 回答 3

6

Connect,因此,Express,静态中间件只接受GET请求。见这里

如果您尝试使用 POST 覆盖公共文件,则需要为此创建单独的路由。

于 2013-08-20T04:25:10.303 回答
2

Connect/Express 的static中间件支持GETHEAD方法

if ('GET' != req.method && 'HEAD' != req.method) return next();

所以,是的,如果您希望能够找到POST匹配静态文件的路径,您需要自己定义处理程序。

于 2013-08-20T04:24:29.017 回答
1

我找到了一个简单的方法来发布静态

app.use(staticPath, function(req, res, next){
if ('POST' != req.method){
    next()
}else{
    req.method = 'GET'
    next()
}
})
app.use(staticPath, express.static('./static'))

效果不错,哈哈

于 2018-02-07T03:06:30.057 回答