2016-07-19 9 views
0

Ich habe ein Array von Dateiobjekten, die an den Server gesendet wird. "files [0] = (Dateiobjekt), files [1] = ..." Multer erkennt seinen Feldnamen nicht und "request.files" ist leer, aber "request.body" gehört zu dem Array von Dateien.Multer hochgeladen Array von Dateien fehlschlagen

Antwort

1

Mein Problem wurde anhängen ich die Anordnung von Dateien auf die FD ich hochgeladen als fd.append(files, fileList) und was ich getan hätte, ist eine for-Schleife, die jedes Dateiobjekt aus dem Array von Dateien an die FD mit einem Feldnamen von Dateien anhängen. Vielen Dank für Ihre Antworten.

0

Verwendung multer Middle upload.any()

app.post('/photos/upload', upload.any(), function (req, res, next) { 
    // req.files is array of `photos` files 
    // req.body will contain the text fields, if there were any 
}) 
0

von dem, was ich aus Ihrer Beschreibung verstehen ist, dass Sie die Verwendung der upload.array Methode machen mehrere Dateien aus dem gleichen Eingabefeld zu übernehmen. Stellen Sie sicher, Sie geben den Feldnamen für diese Methode wie in der Dokumentation angegeben an:

.array (Feldname [, maxCount])

Akzeptieren Sie ein Array von Dateien mit dem Namen fieldname. Optional error> out, wenn mehr als maxCount-Dateien hochgeladen werden. Das Array der Dateien wird in req.files gespeichert.

Was das bedeutet, ist, wenn Sie einen Eingang wie haben:

<input type="file" name="foobar" multiple> 

Dann auf der Server-Seite verwenden:

var upload = require('multer')({ dest:'uploads/' }); 
upload.array('foobar'); 
0

Ich nehme an, Sie können Dateiobjekt-Array nehmen, wenn Sie Datei-Array, console.log (Dateien) => [Datei, Datei, Datei, .... etc] drucken. Dann, Nehmen Sie Ihre Dateien und Felder, erstellen Sie FromData Object und fügen Sie alle Dinge, die Sie an den Server senden müssen, wie folgt an. Stellen Sie sicher, dass Sie "Content-Type" als undefiniert definieren, Ihr Browser wird Ihnen eine Grenze zuweisen, sonst versucht das Backend, die Anfrage abzulehnen.

this.uploadFileToUrl = function(file, title, text, uploadUrl){ 
    var payload = new FormData(); 

    payload.append("title", title); 
    payload.append('text', text); 

    for(var x = 0; x<file.length; x++) { 
     payload.append('myfile', file[x]); 
    } 

    console.log(payload); 

    return $http({ 
     url: uploadUrl, 
     method: 'POST', 
     data: payload, 
     //assign content-type as undefined, the browser 
     //will assign the correct boundary for us 
     headers: { 'Content-Type': undefined}, 
     //prevents serializing payload. don't do it. 
     transformRequest: angular.identity 
    }); 
} 
+0

Veröffentlichen eines Codebeispiels, erklärt nicht, wie es funktioniert. Kannst du bitte ein paar Gedanken darüber schreiben, wie das funktioniert und wie das dazu beitragen könnte, die Frage zu beantworten? –

+0

Danke Michael, ich habe es verstanden und ich habe die Antwort erklärt. – user3444748

Verwandte Themen