发布数据时发生超时错误
js.I试图创build一个file upload使用node.js和mongodb.I在获取数据发送超时错误。我使用的代码是:
app.post('/photos/new', function(req, res) { var photo = new Photo(); req.form.complete(function(err, fields, files) { if(err) { next(err); } else { ins = fs.createReadStream(files.file.path); ous = fs.createWriteStream(__dirname + '/static/uploads/photos/' + files.file.filename); util.pump(ins, ous, function(err) { if(err) { next(err); } else { photos.save({ filename: files.file.filename, file: files.file.path }, function(error, docs) { res.redirect('/photos'); }); } }); //console.log('\nUploaded %s to %s', files.photo.filename, files.photo.path); //res.send('Uploaded ' + files.photo.filename + ' to ' + files.photo.path); } }); });
当我点击提交button时,出现以下错误。
错误:在Timer.ontimeout(timers_uv.js:84:39)处发生超时POST / photos / new Object._onTimeout(/home/nodeexmple/node_modules/connect-timeout/index.js:12:22)
请帮忙。
看到这个答案…
错误:分析器错误,parsing了4344个字节中的0个(Node.js)
另外你可以使用req.clearTimeout(),如上面alessioalex所build议的。
我相信你的代码的这部分是创造你应该避免的问题。
photos.save({ filename: files.file.filename, file: files.file.path }, function(error, docs) { res.redirect('/photos'); });
而是像这样使用:
var post = new Post(); post.filename=files.file.filename; post.file=files.file.path;
然后像这样的东西:
post.save(function(err) { if (err) return postCreationFailed(); req.flash('info', 'photos Succesfully Uploaded'); res.redirect('were u want to redirect'); });
希望这可以解决你的问题。
您正在使用connect-timeout模块,以便在页面加载超过X秒(服务器端)的情况下向用户显示一条消息。
很明显,上传页面可能不止于此,所以你应该在你的上传path中做的是清除超时,如下所示:
app.post('/photos/new', function(req, res) { req.clearTimeout(); ...
阅读更多关于连接超时在其github页面上 。