Node.js can't read XHR2 FormData data

In client I use XHR2 Formdata to upload file in ajax:

var send = function (file) {
        var xhr = new XMLHttpRequest();
        xhr.file = file; 
        xhr.open('post', '/upload', true);
        xhr.send(file);     
}

var fd = new FormData();
fd.append('image', _file); // the _file is my file 

xhr.send(fd);

in node.js server:

app.configure(function(){
    app.use(express.bodyParser({
        uploadDir: "public/images",
        keepExtensions: true,
        limit: 10000000, /* 10M  10*1000*1000 */  
        defer: true 
    }));
    app.use(express.static(__dirname + "/public"));
});



app.post("/upload", function (req, res) {
    console.log(req.files);
    console.log(req.body);

    res.send("ok");
})

the strange thing is, the file could upload successfully, it can't log the req.files and req.body information, they are all empty object

so how can I get the upload file's information, like the save path, size or name?

I tried removing the "defer: true" configuration and it works for me.