首页 文章

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

提问于
浏览
0

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

... webserver / node_modules / express / lib / response.js:412 if(done)return done(err); ^ 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)在SendStream.redirect的SendStream.emit(events.js:166:7)的emitNone(events.js:67:13)(/ home / alex / project / webserver / node_modules / express) /node_modules/send/index.js:401:10)atstat(/home/alex/project/webserver/node_modules/express/node_modules/send/index.js:622:41)at 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

  • ---上传

  • ----- audio-461074839300.3gpp

  • ----- audio-234.3gpp

1 回答

  • 3

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

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

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

相关问题