2016-11-22 1 views
2

Wir möchten eine Funktionalität implementieren, um mehrere Dateien auf den ExpressJS-Server hochzuladen und alle seine eindeutigen URLs über einen ajax-Aufruf zurückzugeben.Upload von Knotendateien mit formidable funktioniert nicht

Es folgt der Beispielcode in meinem Frontend:

var formData = new FormData(); 
for (var i = 0; i < nameId.length; i++) { 
    if($(nameId[i])[0].files[0]){ 
     formData.append(nameId[i], $(nameId[i])[0].files[0], $(nameId[i])[0].files[0].name); 
    } 
} 
$.ajax({ 
    url: '/upload-files', 
    type: 'POST', 
    data: formData, 
    processData: false, 
    contentType: false, 
    success: function(data){ 
     console.log('upload successful!'); 
     console.log(data); 
    } 
}); 

Und in unserem Router haben wir Schnipsel folgenden Code die Anforderung und speichern Sie die Datei zu übernehmen:

router.post('/upload-files',function(req, res, next){ 
    var form = new formidable.IncomingForm(); 
    form.multiples = true; 
    form.uploadDir = path.join(__dirname, '/uploads'); 
    form.on('file', function(field, file) { 
     console.log("File incoming"); 
     fs.rename(file.path, path.join(form.uploadDir, file.name)); 
    }); 
    form.on('error', function(err) { 
     console.log('An error has occured: \n' + err); 
    }); 
    form.on('end', function() { 
     res.end('success'); 
    }); 
}); 

Aber immer nichts passiert im Router. Die Anfrage kommt in den Router, aber danach nichts.

Ist hier etwas falsch? Es wird kein Fehler auf der Serverseite und auf der Clientseite angezeigt, nachdem die lange Warteanforderung fehlgeschlagen ist.

Bitte vorschlagen. Dank

Antwort

1

Ich konnte es lösen, indem & Aktualisierung folgenden Code-Schnipsel fügt hinzu:

In der Upload-Anforderung Verarbeitungsfunktion Code hinzugefügt:

form.parse(req); 

Und in den aktualisierten app.js folgenden Code-Schnipsel zu:

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({extended:false})); 

bis (verarbeiten multipart Daten seperat)

app.use(bodyParser.json()) 
    .use(bodyParser.urlencoded()); 

HINWEIS Aufgrund der Änderung in Parser Warnmeldung folgenden kommt, während Sie den Server starten:

body-parser deprecated undefined extended: provide extended option 
Verwandte Themen