发布数据时出现超时错误

发布于 2024-12-17 02:45:51 字数 1126 浏览 0 评论 0原文

我正在尝试使用 node.js 和 mongodb 创建文件上传。

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);
    }
  });
});

我在发布数据时遇到超时错误。我使用的代码是:当我单击提交按钮时,出现以下错误。

错误:超时 POST /photos/new 在 Object._onTimeout (/home/nodeexmple/node_modules/connect-timeout/index.js:12:22) 在 Timer.ontimeout (timers_uv.js:84:39)

请帮忙。

js.I am trying to create a file upload using node.js and mongodb.I am getting timeout error in posting data.The code that i use is:

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);
    }
  });
});

I get the following error when i click on the submit button.

Error: Timeout POST /photos/new
at Object._onTimeout (/home/nodeexmple/node_modules/connect-timeout/index.js:12:22)
at Timer.ontimeout (timers_uv.js:84:39)

Please help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

森末i 2024-12-24 02:45:51

看到这个答案...

错误:解析器错误,0解析 4344 字节(Node.js)

您也可以按照 alessioalex 上面的建议使用 req.clearTimeout() 。

我相信你的这部分代码正在产生你应该避免的问题。

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');
                });

希望这可以解决您的问题。

see this answer...

Error: parser error, 0 of 4344 bytes parsed (Node.js)

Also u can use req.clearTimeout() as suggested above by alessioalex.

I belive this part of your code is creating problems that u should avoid.

photos.save({
           filename: files.file.filename,
                   file: files.file.path
                 }, function(error, docs) {
              res.redirect('/photos');
         });

Instead use like this:

var post = new Post();
      post.filename=files.file.filename;
      post.file=files.file.path;

And then something like this:

post.save(function(err) {
                   if (err)
                return postCreationFailed();
                   req.flash('info', 'photos Succesfully Uploaded');
               res.redirect('were u want to redirect');
                });

Hope this solves your issue.

半世晨晓 2024-12-24 02:45:51

您正在使用 connect-timeout 模块,以便在页面出现错误时向您的用户显示一条消息加载时间超过 X 秒(服务器端)。

很明显,上传页面可能需要更多时间,因此您应该在上传路线中清除超时,如下所示:

app.post('/photos/new', function(req, res) {
  req.clearTimeout();
  ...

在其 github 页面

You are using the connect-timeout module so that is shows a message to your users in case the page takes more than X seconds to load (server-side).

It's obvious that the upload page might be taking more than that, so what you should do in your upload route is to clear the timeout like this:

app.post('/photos/new', function(req, res) {
  req.clearTimeout();
  ...

Read more about connect-timeout on its github page.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文