2016-09-11 2 views
0

Ich habe ein Formular in HTML mit zwei Eingaben - 1 Text und 1 Datei.Post-Datei und Daten in derselben Anfrage an Knoten-Server

<form method="post" action="http://localhost:3000/users"> 
      <input type="text" name="username" /> 
      <input type="file" name="file" /> 
      <button type="submit">Submit</button> 
     </form> 

Jetzt bin Entsendung ich es zu einem Knoten server-

router.post('/users', function(req, res, next){ 
    req.pipe(req.busboy); 
    req.busboy.on('file', function(fieldname, file, filename){ 
     var fstream=fs.createWriteStream('./uploads/'+filename); 
     file.pipe(fstream); 
     fstream.on('close', function(){ 
      var user = User({ 
       username: req.body.username, 
      }); 
      user.save(function(err){ 
       if(err) 
        res.json({error: err}); 
       else 
        res.redirect('/'); 
      }); 
     }); 
    }); 
}); 

Aber ich bin nur in der Lage, entweder Benutzername oder die Datei zu erhalten (wenn ich enctype="multipart/form-data" in HTML-Formular.) Zu einem Zeitpunkt.

Gibt es eine Möglichkeit, beide in einer einzigen Anfrage zu speichern. Wenn ja, wie?

Jede Hilfe wird geschätzt.

Danke.

Antwort

1

Sie hören nur nach Dateifeldern. Wenn Sie über Nicht-Dateifelder benachrichtigt werden möchten, müssen Sie auch einen 'field' Ereignis-Listener hinzufügen:

req.busboy.on('field', function(key, val, keyTrunc, valTrunc) { 
    console.log(key, val); 
}); 
Verwandte Themen