2016-04-01 13 views
0

Ich versuche, eine Datei auf einen Server (gebaut mit Java) durch Lesen von einem mongodb gridfs-Stream hochladen.nodeJS Datei-Upload mit Anfrage-Bibliothek

exports.upload = function(req, res, next) { 
var IHUrl = config.api.url + "PhotosServlet"; 


var data = req.body; 

var file1 = api.gfs.createReadStream({ 
    _id: data.fileId 
}) 

var formData = { 
    "imgTyp": data.imgTyp, 
    "listingid": data.listingid, 
    "scaleTech": data.scaleTech, 
    "SPC": data.SPC, 
    "SPCUID": data.SPCUID, 
    "varRand": data.varRand, 
    "file1": file1 
}; 

var r = request.post({ 
    url: IHUrl, 
    formData: formData 
}, function(error, IHResponse, body) { 
    if (error) { 
     res.send(500, error); 
     console.log("Error occured uploading file1") 
    } else { 
     console.log("Upload successful", IHResponse); 
     res.send(200, IHResponse); 
    } 
}); 
next(); 
}; 

Datei ist bereits in mongodb gridfs hochgeladen, bevor ich das Hochladen der Datei starten Server Upstream.

Ich bin mit folgenden NodeJS Bibliotheken:

Anfrage, gridfs-stream

ich folgende Fehlermeldung von Upstream-Server bin immer:

javax.servlet.ServletException: Verarbeitung von multipart/form- Datenanforderung fehlgeschlagen. Stream wurde unerwartet beendet

Was könnte hier schiefgehen?

+0

Versuchen Sie, 'next();' –

+0

Dank Kumpel für den Vorschlag zu entfernen. Ich habe versucht, Header hinzuzufügen: {"transfer-encoding": "chunked"}, zu den Headern und es funktionierte ohne Beanstandung. Diese – Prabhat

+0

ist, wie es aussehen wird: request.post ({ url: IHUrl, Header: { "Transfer-Encoding": "gestückelt"}, Formdata: Formdata } – Prabhat

Antwort

0

Ich erkannte, dass es eine Weile war und es ein Problem einige von Ihnen auftreten können und die Lösung war nicht wirklich, was ich in den Kommentaren veröffentlicht, als ich später weitere Probleme gefunden. Das Problem, das wir hatten, war, dass das Java-Servlet, das wir die mehrteiligen Formulardaten gepostet haben, nicht in der Lage war, mit chunked Daten umzugehen, und Einstellungsheader wird Ihnen nicht gut tun. Verwenden der Anforderungsbibliothek wird Ihnen hier nicht helfen. Ich musste den Restler (https://www.npmjs.com/package/restler) verwenden, um die gesamten mehrteiligen Daten in einem einzigen Chunk zu senden.