我正在使用以下代码从Debian中的Node.js服务器下载文件:
var publicPath = __dirname + '/public';
app.get('/public/*', function (req, res) {
var file = publicPath + req.path;
res.sendFile(decodeURI(file));
}
除非文件未命名,否则文件将成功下载。例如,无法下载“ /public/.txt”或“ /public/.exe”(等效文件)。给出以下错误:
NotFoundError: Not Found
at SendStream.error (/home/user/server/node_modules/send/index.js:270:31)
at SendStream.pipe (/home/user/server/node_modules/send/index.js:585:14)
at sendfile (/home/user/server/node_modules/express/lib/response.js:1099:8)
at ServerResponse.sendFile (/home/user/server/node_modules/express/lib/response.js:429:3)
at /home/user/server/server.js:279:6
at Layer.handle [as handle_request] (/home/user/server/node_modules/express/lib/router/layer.js:95:5)
at next (/home/user/server/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/home/user/server/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/home/user/server/node_modules/express/lib/router/layer.js:95:5)
at /home/user/server/node_modules/express/lib/router/index.js:281:22
at param (/home/user/server/node_modules/express/lib/router/index.js:354:14)
at param (/home/user/server/node_modules/express/lib/router/index.js:365:14)
at Function.process_params (/home/user/server/node_modules/express/lib/router/index.js:410:3)
at next (/home/user/server/node_modules/express/lib/router/index.js:275:10)
at expressInit (/home/user/server/node_modules/express/lib/middleware/init.js:40:5)
at Layer.handle [as handle_request] (/home/user/server/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/user/server/node_modules/express/lib/router/index.js:317:13)
at /home/user/server/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/home/user/server/node_modules/express/lib/router/index.js:335:12)
at next (/home/user/server/node_modules/express/lib/router/index.js:275:10)
at query (/home/user/server/node_modules/express/lib/middleware/query.js:45:5)
有什么方法可以在不命名的情况下下载这些文件?
您需要显式允许dotfiles
为了使其工作(使用的旧版本Express
:
app.use(express.static(__dirname +'/ public',{dotfiles:'allow'})));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句