如何从nodejs服务器返回静态xml文件

php*_*ode 6 ejs node.js express

我正在集成第三方模板,该模板使用Mootools编写幻灯片.nodejs配置了express和ejs

幻灯片显示的数据来自几个xml文件.例如data.xml.我将data.xml放在公共文件夹中,并将以下代码添加到server.js(主文件)

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

app.post('/data.xml', function(req, res){
    res.contentType('application/xml');
    res.sendFile('/data.xml');
});
Run Code Online (Sandbox Code Playgroud)

不幸的是,这似乎不起作用.如果我输入url http:// localhost:8080/data.xml,我可以看到该文件

但我在firebug中看到的响应是"无法POST /data.xml"

我假设Mootools试图使用一些POST方法访问该文件.对此问题的任何建议?

use*_*838 2

当您使用 sendFile() 发送文件时,您需要指向绝对地址检查这一点。请注意,我的 data.xml 在主文件夹中。

您可以使用 localhost:8080/data (不是 localhost:8080/data.xml)访问该文件,而且由于这是一篇文章,因此您无法通过浏览器访问它。使用邮递员代替。或者,如果您需要在浏览器上访问它,您需要更改协议才能获取。

var express = require('express');
var path = require('path');
var app = express();

// you don't need this line!
// app.use(express.static(path.join(__dirname)));


app.post('/data', function(req, res){
    res.contentType('application/xml');
    res.sendFile(path.join(__dirname , 'data.xml'));
});



var server = app.listen(8080, () => {
	console.log('Started listening on 8080');
});
Run Code Online (Sandbox Code Playgroud)