2017-08-04 75 views
0

如何将文件发送到POST中的Node.js和参数数据。我很高兴使用任何框架。我曾经尝试过,但我很乐意改变。在POST中将文件和数据从Python上传到Node.js中

在我的尝试中,文件发送,但req.body是空

Python代码上传:

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}) 

服务器端的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 

回答

1

我不t知道如何正确使用python发送文件,但要接收带有node.js的文件,您可以使用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

强大的文件上传工作 - 发送其他数据是问题。 fileupload可以让你发送数据吗? –

+0

'files = {'upload_file':open('file.txt','rb')}' 'values = {'DB':'photcat','OUT':'csv','SHORT':'short '}' 'r = requests.post(url,files = files,data = values)' – Goolishka

+0

在节点中接收。文件'req.files.upload_file'; params'req.body.DB' – Goolishka