2016-04-25 12 views
0

Ich habe versucht, ein Anmeldeformular mit einem Foto hochladen in Node Express mit Connect-Busboy erstellen. Wenn ich den Multi-Part-/Formulardaten-Server verwende, werden die anderen Textfelder im Formular nicht gelesen. Bitte helfen Sie mir.Node Express Formular Registrierung mit Datei-Upload funktioniert nicht

meine Jade-Datei ist,

form(class='form-signin', action='/s/upload', method='POST', enctype='multipart/form-data') 

          input(type='text', name='classname', class='form-control', placeholder='Classname',required) 
          input(type='text', name='subject', class='form-control', placeholder='Subject',required) 
          input(type='text', name='chapter', class='form-control', placeholder='Chapter',required) 
          input(type='text', name='module', class='form-control', placeholder='Module',required) 
          input(type='text', name='name', class='form-control', value = user.username,required) 
          input(type='file', name='thumbnail', class='form-control') 
          input(type='text', name='regid', class='form-control',value = "#{user._id}") 

          button(class='btn btn-lg btn-primary btn-block', type='submit') Register 
          span.clearfix 
        #message 
         if message 
          h1.text-center.error-message #{message} 

ist meine Anmeldung Skript,

router.post('/upload', function(req, res, next) 

    { 

    console.log("help..........."+req.body.chapter); 
    console.log("Got a POST request for the homepage"); 
    var ar =dirname+'/uploads/'+req.body.thumbnail; 
    var person = new Upd({ 
     classname: req.body.classname, 
     subject: req.body.subject, 
     chapter: req.body.chapter, 
     module: req.body.module, 
     name: req.body.name, 
     thumbnail: req.body.thumbnail, 
     filedtls: ar, 
     regid: req.body.regid 
     }); 

    person.save(function (error, data){ 
     if(error) {throw error; } 

     }); 

    var fstream; 
    req.pipe(req.busboy); 
    req.busboy.on('file', function (fieldname, file, filename) { 
     console.log("Uploading: " + filename); 
     console.log("Uploading: " + dirname); 

    fstream = fs.createWriteStream(dirname + '/uploads/' + filename); 
    file.pipe(fstream); 

    fstream.on('close', function() {  
     console.log("Upload Finished of " + filename); 
     console.log("file lo " + ar); 
     res.redirect('/home');   //where to go next 
    }); 
}); 
}); 
+0

Normalerweise ist es multipart/form -Daten nicht mehrteilig/Formulardaten. Auch ist es besser, wenn Sie uns den Code, den Sie verwenden, um es zu tun, oder wir können Ihnen nicht helfen – jaumard

Antwort

0

Die Dokumentation sagen Felder abrufen Sie hinzufügen:

req.busboy.on('file', function (fieldname, file, filename) { 
    console.log("Uploading: " + filename); 
    console.log("Uploading: " + dirname); 
req.busboy.on('field', function(fieldname, val, fieldnameTruncated, valTruncated) { 
     console.log('Field [' + fieldname + ']: value: ' + inspect(val)); 
    }); 
req.pipe(req.busboy); 
+0

Ich habe es versucht, aber immer noch ein Problem haben. Es zeigt inspect nicht definierten Fehler. – jicks

+0

Siehe meine Bearbeitung. req.pipe muss nach busboy.on sein – jaumard

Verwandte Themen