我有这样的代码:
res.sendfile( '../../temp/index.html' )
但是,它会抛出以下错误:
Error: Forbidden
at SendStream.error (/Users/Oliver/Development/Personal/Reader/node_modules/express/node_modules/send/lib/send.js:145:16)
at SendStream.pipe (/Users/Oliver/Development/Personal/Reader/node_modules/express/node_modules/send/lib/send.js:307:39)
at ServerResponse.res.sendfile (/Users/Oliver/Development/Personal/Reader/node_modules/express/lib/response.js:339:8)
at exports.boot (/Users/Oliver/Development/Personal/Reader/server/config/routes.js:18:9)
at callbacks (/Users/Oliver/Development/Personal/Reader/node_modules/express/lib/router/index.js:161:37)
at param (/Users/Oliver/Development/Personal/Reader/node_modules/express/lib/router/index.js:135:11)
at pass (/Users/Oliver/Development/Personal/Reader/node_modules/express/lib/router/index.js:142:5)
at Router._dispatch (/Users/Oliver/Development/Personal/Reader/node_modules/express/lib/router/index.js:170:5)
at Object.router (/Users/Oliver/Development/Personal/Reader/node_modules/express/lib/router/index.js:33:10)
at next (/Users/Oliver/Development/Personal/Reader/node_modules/express/node_modules/connect/lib/proto.js:199:15)
有人能告诉我为什么会这样吗?
发布于 2013-01-29 23:52:22
我认为这是因为相对路径;"../“被认为是恶意的。首先解析本地路径,然后调用res.sendfile
。您可以提前使用path.resolve
解析路径。
var path = require('path');
res.sendFile(path.resolve('temp/index.html'));
发布于 2016-02-09 19:45:28
Express documentation建议使用一种不同的方法,在我看来,它比当前的解决方案更有意义。
res.sendFile('index.html', {root: './temp'});
根选项似乎将./
设置为项目的根目录。所以我不能完全知道你的文件相对于项目根目录的位置,但是如果你的临时文件夹在那里,你可以设置./temp
作为你要发送的文件的根目录。
发布于 2021-05-22 08:59:24
此外,您还可以使用path.join
const path = require("path");
router.get("/", (req, res) => {
let indexPath = path.join(__dirname, "../public/index.html");
res.sendFile(indexPath);
});
https://stackoverflow.com/questions/14594121
复制