node.js

#javascript #node.js #express

#javascript #node.js #экспресс

Вопрос:

Я пишу серверное приложение с express amp; node.js.

У меня есть следующий:

 app.configure(function () {
    app.use(express.bodyParser());
});
  

Все работает хорошо, но:

  1. Насколько я понимаю, этот метод устарел.

  2. Следующий метод не работает должным образом. Он записывает несколько случайных символов вместо записи правильных символов:

     app.post('/randomWrite', function (req, res) {
    var fileName = req.body.name;
    var contentLength = parseInt(req.files.file._writeStream.bytesWritten);
    var start = parseInt(req.body.chunk) * 102400;
    var buffer = new Buffer(parseInt(req.files.file._writeStream.bytesWritten));
    fs.open(req.files.file.path, 'r', function (status, fd) {
        if (fd == null) {
            console.log("Can't open the file with the fd");
            return;
        }
        fileNameLocation = "./"   fileName;
        fs.open(fileNameLocation, 'w ', function (err, fd1) {
            fs.read(fd, buffer, 0, contentLength, start, function (err, bytesRead, buffer1) {
                if (err)
                    console.log("ERROR: "   err);
                fs.write(fd1, buffer1, 0, contentLength, start, function (err, bytesWrite, buffer) {
                    if (req.body.chunk == req.body.chunks - 1) {
                        fs.close(fd, function (err) {
                        })
                        fs.close(fd1, function (err) {
                        })
                        FileServer.prototype.returnResCodeWithId(res, 200, id);
                    } else {
                        fs.close(fd, function (err) {
    
                        })
                        fs.close(fd1, function (err) {
    
                        })
                        FileServer.prototype.returnResCode(res, 200);
                    }
                })
            })
        })
    })
      

Вместо того, чтобы записывать правильное смещение, кажется, что что-то пошло не так, и записывается некоторый текст из промежуточного программного обеспечения (bodyParser).

Как я могу изменить express.bodyParser()? Это решит мою проблему с записью?

Ответ №1:

Вам необходимо использовать промежуточное программное обеспечение для синтаксического анализа тела.

Вы можете установить его с помощью

 npm install body-parser
  

и включите его с помощью Express, используя

 var bodyparser = require('body-parser');
app.use(bodyparser());
  

Если вы тоже хотите загружать файлы, тогда взгляните на multer.

Комментарии:

1. Спасибо, бит все еще пишет несколько случайных символов. есть проблема с fs.write и fs.read этого метода?