2014-06-17 52 views
0

我寫與express & node.js.的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()?它會解決我的問題與寫作?

回答

0

您需要使用Body-parser中間件。

您可以

npm install body-parser 

與快遞使用

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

安裝它,包括它如果你想太多文件上傳,然後看看multer

+0

謝謝,它還是寫一些隨機字符。這種方法的'fs.write'和'fs.read'有問題嗎? –