如何使用 NodeJS 和express.router 发送文件?

use*_*681 0 node.js express

我正在尝试将文件从nodeJS 和express.router 发送到客户端。但我收到这个错误:

...webserver/node_modules/express/lib/response.js:412 如果(完成)返回完成(错误);^

TypeError:done 不是 SendStream.ondirectory 的 /home/alex/project/webserver/node_modules/express/lib/response.js:412:22 处的函数(/home/pthong/project/webserver/node_modules/express/lib/ response.js:986:5)在emitNone(events.js:67:13)在SendStream.emit(events.js:166:7)在SendStream.redirect(/home/alex/project/webserver/node_modules/express/ node_modules/send/index.js:401:10) 在 onstat (/home/alex/project/webserver/node_modules/express/node_modules/send/index.js:622:41) 在 FSReqWrap.oncomplete (fs.js:82) :15)

这是我的代码:

router.get('/getFile/:filename', function(req,res){
    res.sendFile(__dirname, '../uploads', req.params.filename);
});
Run Code Online (Sandbox Code Playgroud)

http请求是: http: //dummy.com/getFile/audio-461074839300.3gpp

——如果我尝试这个:

res.sendFile('/uploads/'+ req.params.filename);
Run Code Online (Sandbox Code Playgroud)

我收到下一个错误:

错误:ENOENT:没有这样的文件或目录,错误时出现 stat '/uploads/audiomessage-10207974875988003-1327917607235274-1461074839300.3gpp'

这是网络服务器的结构:webs

  • 网络服务器
  • ---服务器.js
  • ---上传
  • -----音频-461074839300.3gpp
  • -----音频-234.3gpp

小智 5

尝试 res.sendFile(__dirname + 文件路径/文件名)

就您而言,这可能是:

res.sendFile(__dirname + "/uploads/" + req.params.filename);
Run Code Online (Sandbox Code Playgroud)