从POST请求nodejs中提取文件

时间:2017-04-06 20:01:14

标签: python node.js rest file

我是第一次尝试nodejs。我正在使用它与python shell。我正在尝试使用Post request

将文件从一台PC传输到另一台PC

app.js(服务器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文件从(客户端PC)发送文件

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

我使用fiddler并且请求似乎包含客户端PC上的文件,但我似乎无法在Server PC上获取该文件。如何提取和保存文件?是因为我缺少标题吗?我该怎么用?感谢

1 个答案:

答案 0 :(得分:0)

我会猜测并说你根据问题的语法使用了Express。 Express不提供开箱即用的文件上传支持。

您可以使用multerbusboy中间件套件添加multipart上传支持。

实际上很容易做到这一点,这里有一个带有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}`)
})