Ошибка: ошибка синтаксического анализатора, проанализировано 0 из 4344 байт (Node.js) - PullRequest
4 голосов
/ 22 ноября 2011

Я пытаюсь использовать программу для загрузки своих файлов. Код, который я использую:

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, все работает нормально. Я не знаю причину этого и застрял. Может ли кто-нибудь помочь мне, пожалуйста?

Ответы [ 3 ]

2 голосов
/ 11 июля 2012

Другая возможная причина проблемы в этой строке:

request.setEncoding ("utf8");

2 голосов
/ 22 ноября 2011

Смотрите этот выпуск Github: https://github.com/felixge/node-formidable/issues/34

1 голос
/ 02 февраля 2012

Вы пытаетесь выполнить работу с базой данных раньше всего, что создает проблемы для вас.Попробуйте следующий код:

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

});

Удачи ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...