2017-08-04 4 views
0

Comment envoyer un fichier à Node.js ET les données de paramètre dans POST. Je suis heureux d'utiliser n'importe quel cadre. Je l'ai essayé avec formidable mais je suis heureux de changer.Téléchargement de fichier et de données à partir de Python vers Node.js dans POST

Dans ma tentative, le fichier envoie, mais req.body est vide

code Python télécharger:

with open('fileName.txt', 'rb') as f: 
     payLoad = dict() 
     payLoad["data"] = "my_data" 
     r = requests.post('http://xx.xx.xx.xx:8080/sendFile',json = payLoad, files={'fileName.txt': f}) 

côté serveur Node.js:

var express = require('express'); 
var formidable = require('formidable'); 
var app = express(); 
var bodyParser = require('body-parser'); 

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

app.post('/sendFile', function (req, res){ 
    console.log(req.body) 
    // req.body is empty 

Répondre

1

Je ne t savoir comment envoyer correctement le fichier en utilisant python, mais pour recevoir le fichier avec node.js vous pouvez utiliser express-fileupload

var fileUpload = require('express-fileupload'); 
app.use(fileUpload()); 

app.post('/upload', function(req, res) { 
    if (!req.files) 
    return res.status(400).send('No files were uploaded.'); 

    // The name of the input field (i.e. "sampleFile") is used to retrieve the uploaded file 
    let sampleFile = req.files.sampleFile; 

    // Use the mv() method to place the file somewhere on your server 
    sampleFile.mv('/somewhere/on/your/server/filename.jpg', function(err) { 
    if (err) 
     return res.status(500).send(err); 

    res.send('File uploaded!'); 
    }); 
}); 

https://www.npmjs.com/package/express-fileupload

+0

œuvres Formidables pour le téléchargement de fichiers - son envoi les autres données qui est le problème. Est-ce que fileupload vous permet d'envoyer des données? –

+0

'files = {'upload_file': ouvert ('file.txt', 'rb')}' 'values ​​= {'DB': 'photcat', 'OUT': 'csv', 'SHORT': 'court '} ' ' r = demandes.post (url, fichiers = fichiers, données = valeurs) ' – Goolishka

+0

pour recevoir dans le noeud. fichiers 'req.files.upload_file'; params 'req.body.DB' – Goolishka