0
這是Node.JS代碼,它有兩部分。第一個是在主服務器上的文件:使用Node.JS下載文件的奇怪錯誤
app.get('/download/:photo', function (req, res){
dbs.imagenschema.find({ _id: req.params.photo }, function (err, imagen){
if (err) throw assert.ifError(err);;
var file = __dirname + '/public/users/' + imagen.auid + '/' + imagen.name;
var filename = path.basename(file);
var mimetype = mime.lookup(file);
res.setHeader('Content-disposition', 'attachment; filename=' + filename);
res.setHeader('Content-type', mimetype);
var filestream = fs.createReadStream(file);
filestream.pipe(res);
});
});
另一部分是dbs.imagenschema
,但是這部分很簡單,它只是從dbs
模塊導出的圖像模式。
這是德按鈕被點擊時,開始下載:
<a href="/download/<%= photo._id %>">
<button class="btn btn-inverse"><i class="icon-download-alt icon-white"></i> Download</button>
</a>
但是,當我點擊它,我收到此錯誤:
TypeError: Cannot read property 'background' of null
at eval (eval at <anonymous> (/root/pixgalery/node_modules/ejs/lib/ejs.js:234:12), <anonymous>:30:4196)
at /root/pixgalery/node_modules/ejs/lib/ejs.js:239:15
at Object.exports.render (/root/pixgalery/node_modules/ejs/lib/ejs.js:277:13)
at View.exports.renderFile [as engine] (/root/pixgalery/node_modules/ejs/lib/ejs.js:303:22)
at View.render (/root/pixgalery/node_modules/express/lib/view.js:75:8)
at Function.app.render (/root/pixgalery/node_modules/express/lib/application.js:500:10)
at ServerResponse.res.render (/root/pixgalery/node_modules/express/lib/response.js:717:7)
at /root/pixgalery/app.js:181:15
at Promise.<anonymous> (/root/pixgalery/db.js:237:27)
at Promise.<anonymous> (/root/pixgalery/node_modules/mongoose/lib/promise.js:133:8)
所以,我認爲是因爲這個:
app.get('/:user/:id', function (req, res){
dbs.getimage(req.params.id, req.params.user, function (user, img, fav, comments){
if (img.type == 'music') {
res.render('music.ejs', {
user: user,
photo: img,
req: req.session.user,
fav: fav,
comments: comments
});
} else{
res.render('photo.ejs', {
user: user,
photo: img,
req: req.session.user,
fav: fav,
comments: comments
});
}
});
});
也許服務器認爲/download/fooid
是一個請求我上面寫的代碼,因爲/download/fooid
不會發送任何響應EJS文件,所以,不可能得到這樣的錯誤。任何解決方案?
謝謝先進!
我想在我的VPS,然後,不能正常工作。但是在本地作品中 – MrMangado 2013-04-11 17:26:14
你是直接訪問VPS上的節點,還是通過類似nginx的東西?也許有人在緩存最初的錯誤迴應? – robertklep 2013-04-11 17:31:44