2016-07-12 3 views
0

Ich muss eine POST-Anfrage in Node.js zu einer API, die zwei Parameter: 1) "Metadaten", eine Zeichenfolge und 2) "Datei", ein Multipart Datei.Node.js POST-Anfrage mit mehrteiligen Datei als Parameter

Das folgende ist ein Teil des Java-Code serverseitige:

public ResponseEntity<CmisDocumentDTO> createDocument(
     @ApiParam(name = "file", value = "File to be uploaded.", required = true) @RequestParam("file") MultipartFile file, 
     @ApiParam(name = "metadata", value = "Metadata of the document", required = false) @RequestParam("metadata") String metadata) { 
    //Calls the service 
} 

Die folgende mein node.js Code ist diese Anforderung aufgerufen wird. Die Datei ist auf meinem lokalen Rechner und verwendet die form-data-Modul:

var FormData = require('form-data'); 
var form = new FormData(); 
form.append("metadata", "metadata_string_goes_here"); 
form.append("file", fs.createReadStream(fileName)); 

var request = https.request({ 
    method: 'post', 
    host: 'example.org', 
    path: '/upload', 
    "rejectUnauthorized": false, 
    headers: form.getHeaders() 
}); 

form.pipe(request); 

request.on('response', function(res) { 
    console.log(res.statusCode); 
}); 

Wenn ich diesen Code ausführen, ein interner Dienstfehler (Code: 500) zurückgegeben, die der MultipartFile Parameter „file“ sagt, ist nicht vorhanden .

Wie reiche ich erfolgreich eine POST-Anfrage mit einer mehrteiligen Datei als Parameter ein?

Danke!

Antwort

0

Dateiname sollte den Pfad der Datei in der lokalen Maschine sein

fs.createReadStream(fileName) 

Falls Sie nicht absoluten Pfad mit Wurzel beginnen gegeben haben dann Relative Pfade arbeiten, aber sie sind relativ() process.cwd, nicht die aktuell ausführendes Modul.

Verwandte Themen