【问题标题】:Error: parser error, 0 of 4344 bytes parsed (Node.js)错误:解析器错误,解析了 4344 个字节中的 0 个 (Node.js)
【发布时间】:2012-01-03 20:23:30
【问题描述】:

我正在尝试使用上传程序来上传我的文件。我使用的代码是

app.post('/photos',loadUser, function(req, res) {
  var post = new Post();
  req.form.complete(function(err, fields, files) {
    if(err) {
      console.log(err);
      next(err);
    } else {
      ins = fs.createReadStream(files.file.path);
      ous = fs.createWriteStream(__dirname + '/public/uploads/photos/' + files.file.filename);
      post.filename=files.file.filename;
      post.file=files.file.path;
      util.pump(ins, ous, function(err) {
        if(err) {
          next(err);
        } else {
          post.save(function(err,docs) { 
        req.flash('info', 'information  Saved');
            res.redirect('/photos');
          });
        }
      });
    }
  });
});

当我删除 loadUser 方法时,一切正常,但是当我使用 loadUser 方法时,它给了我一个错误。报错的控制台信息为:

Error: parser error, 0 of 4344 bytes parsed
at IncomingForm.write (/home/darhamid/node_modules/formidable/lib/incoming_form.js:141:17)
at IncomingMessage.<anonymous> (/home/darhamid/node_modules/formidable/lib/incoming_form.js:91:12)
at IncomingMessage.emit (events.js:67:17)
at HTTPParser.onBody (http.js:121:23)
at Socket.ondata (http.js:1349:22)
at TCP.onread (net_uv.js:312:27)

该错误仅在我使用 loadUser 功能时引起,如果我删除 loadUser 功能一切正常。 我不知道这背后的原因并且被卡住了。谁能帮帮我?

【问题讨论】:

    标签: javascript node.js mongodb express mongoose


    【解决方案1】:

    【讨论】:

    • 尝试使用 pause() 和 resume() 方法仍然得到相同的错误
    • 我在没有使用 loadUser 函数的情况下尝试过,一切正常。错误似乎是因为使用了维护当前用户会话的 loadUser 函数。不知道如何解决这个问题。
    【解决方案2】:

    您试图在一切之前执行数据库操作,这给您带来了问题。试试下面的代码:

    app.post('/potos', function(req, res, next) {
      //req.form.pause();
      req.form.complete(function(err, fields, files) {
        if(err) {
          next(err);
        } else {
          ins = fs.createReadStream(files.file.path);
          ous = fs.createWriteStream(__dirname + '/public/uploads/photos/' + files.file.filename);
          var post = new Post();
          post.filename=files.file.filename;
          post.file=files.file.path;
          post.created_at = new Date();
          post.user_id = req.session.user_id;
    
          function postCreationFailed() {
            req.flash('error', 'Unable to Download ');
            res.render('photos/new', {
              locals: {
                 post: new Post(),currentUser: req.session.user_id
              }
            });
          }
    
          util.pump(ins, ous, function(err) {
            if(err) {
              next(err);
            } else { 
                     console.log('\nuploaded %s to %s',  files.file.filename, files.file.path);
                     post.save(function(err) {
                       if (err)
                    return postCreationFailed();
                       req.flash('info', 'photos Succesfully Uploaded');
                   res.redirect('/user/photos/'+post.user_id);
                    });
                  }
          });
        }
      });
      req.form.on('progress', function(bytesReceived, bytesExpected){
        var percent = (bytesReceived / bytesExpected * 100) | 0;
        process.stdout.write('Uploading: %' + percent + '\r');
      });
    
    });
    

    祝你好运……

    【讨论】:

      【解决方案3】:

      问题的另一个可能原因在这一行:

      request.setEncoding("utf8");

      【讨论】:

        猜你喜欢
        • 2011-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-11
        相关资源
        最近更新 更多