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

时间:2016-04-25 13:52:05

标签: node.js express

我正在尝试将nodeJS和express.router中的文件发送到客户端。但是我得到了这个错误:

  

... Web服务器/ node_modules /表达/ LIB / response.js:412       if(done)return done(err);                        ^

     

TypeError:done不是函数       在/home/alex/project/webserver/node_modules/express/lib/response.js:412:22       在SendStream.ondirectory(/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);
});

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

- 如果我试试这个:

res.sendFile('/uploads/'+ req.params.filename);

我收到了下一个错误:

  

错误:ENOENT:没有这样的文件或目录,stat   '/uploads/audiomessage-10207974875988003-1327917607235274-1461074839300.3gpp'       在错误(本机)

这是网络服务器的结构: 纤维网

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

1 个答案:

答案 0 :(得分:3)

尝试res.sendFile(__ dirname + filepath / filename)

在您的情况下,这可能是:

res.sendFile(__dirname + "/uploads/" + req.params.filename);