2017-04-06 6 views
0

Ich versuche Nodejs zum ersten Mal. Ich benutze es mit Python Shell. Ich versuche, eine Datei von einem PC auf einen anderen mit Gesuch zu übertragenDatei aus POST-Anfrage extrahieren nodejs

app.js (Server PC)

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

app.post('/mytestapp', function(req, res) { 
    console.log(req) 
    var command = req.body.command; 
    var parameter = req.body.parameter; 
    console.log(command + "|" + parameter) 
    pyshell.send(command + "|" + parameter); 
    res.send("POST Handler for /create") 
}); 

Python-Datei-Datei aus (Client PC) senden

f = open(filePath, 'rb') 
try: 
    response = requests.post(serverURL, data={'command':'savefile'}, files={os.path.basename(filePath): f}) 

I Verwenden Sie fiddler und die Anfrage scheint die Datei auf dem Client-PC zu enthalten, aber ich kann nicht scheinen, die Datei auf dem Server-PC zu bekommen. Wie kann ich die Datei extrahieren und speichern? Liegt es daran, dass mir Header fehlen? Was soll ich verwenden? Danke

Antwort

0

Ich werde raten und sagen, dass Sie Express basierend auf der Syntax in Ihrer Frage verwenden. Express wird nicht mit Unterstützung für das Hochladen von Dateien ausgeliefert.

Sie können die multer oder busboy Middleware-Pakete verwenden, um multipart Upload-Unterstützung hinzuzufügen.

Es ist eigentlich ziemlich einfach, dies zu tun, ist hier eine Probe mit multer

const express = require('express') 
const bodyParser = require('body-parser') 
const multer = require('multer') 

const server = express() 
const port = process.env.PORT || 1337 

// Create a multer upload directory called 'tmp' within your __dirname 
const upload = multer({dest: 'tmp'}) 

server.use(bodyParser.json()) 
server.use(bodyParser.urlencoded({extended: true})) 

// For this route, use the upload.array() middleware function to 
// parse the multipart upload and add the files to a req.files array 
server.port('/mytestapp', upload.array('files') (req, res) => { 
    // req.files will now contain an array of files uploaded 
    console.log(req.files) 
}) 

server.listen(port,() => { 
    console.log(`Listening on ${port}`) 
}) 
+0

Dank! aber von welchem ​​Client-PC (Python-Skript) würde der Code die Datei hochladen? – golu

+0

@golu ist das nicht eine andere Frage als die, die Sie gefragt haben, wie man eine hochgeladene Datei auf einen Nodejs-Server behandelt? – peteb

+0

Ja, vielleicht so. Brauche ich dann eine andere Frage? Ich bin auch auf diesem Teil stecken .. – golu