2016-11-03 3 views
0

Ich bin eine neue Biene zu ExpressJS, Ich möchte ein file und einige data von javascript hochladen, AJAX post als FormData object verwenden, js routes, zum Ausdruck bringen, die Datei in Server zu speichern. Ich bin in der Lage, vom Frontend aus zu posten, kann aber keine Daten von der Serverseite abrufen.Express.js erhalten Datei von Formdata

Es folgt der Code-Schnipsel ich versucht:

AJAX Post von Client-Seite Code-Schnipsel:

var files = []; 
    $('#upload').on('change',function(){ 
     var form_data = new FormData(); 
     form_data.append('file_uplaoded',$('#upload')[0].files[0]); 
     form_data.append('name1',"10000900055"); 
     form_data.append('name2',"10000900044"); 
     form_data.append('name3',"10000900033"); 
     form_data.append('name4',"10000900022"); 
     form_data.append('name5',"10000900011"); 
     console.log(form_data); 
     $.ajax({ 
      type: "POST", 
      url: '/ulploadfile', 
      data: form_data, 
      cache: false, 
      processData: false, 
      contentType: false, 
      success: function(data){ 
       alert('success'); 
      } 
      // dataType: 'json', 
      // contentType: "application/json; charset=utf-8" 
     }).done(function(data) { 
      // alert('success1'); 
     }); 
    }); 

Server-Side-Code-Schnipsel:

router.post('/ulploadfile', function(req, res, next) { 
    var body = ''; 
    try { 
     req.on('data', function (data) { 
      body += data; 
     }); 
     req.on('end', function() { 
      var post = qs.parse(body); 
      console.log(post); 
      res.send("UPLOADING FILE RESPONSE"); 
     }); 
    } catch (e) { 
     console.log(e); 
     res.send("UPLOADING FILE RESPONSE ERRPR"); 
    } finally { 
    } 
}); 

UPDATE OUT PUT SCREENSHOT Output sceenshot

So würde ich gerne wissen, wie die Daten aus dem Anfrageobjekt im Backend abgerufen werden. Ich möchte es ohne andere Pakete machen.

Vielen vielen Dank für die Hilfe & Vorschläge.

+0

Got es – Dipak

Antwort

1

Es ist ein gutes Modul für Dateien (mehrteiliger Daten) in POST-Anfragen, die so genannten multer

Sie können es Validierungsfunktionen, das Ziel, unterschiedliche Speicher hinzufügen ... Es gibt sogar addon multer-s3 dafür zu verwenden, als ein Speicher.

router.post('/ulploadfile', upload.single('file_uplaoded'), function(req, res, next) { 
 
    // req.file is the `file_uplaoded` file 
 
    // req.body will hold the text fields, if there were any 
 
})

+0

Dank von https://www.npmjs.com/package/express-fileupload gelöst, ich gelöst es durch gewaltiges Paket. – Dipak