【问题标题】:Extract file from POST request nodejs从 POST 请求 nodejs 中提取文件
【发布时间】:2017-09-02 01:12:25
【问题描述】:

我是第一次尝试 nodejs。我将它与 python shell 一起使用。我正在尝试使用 Post 请求将文件从一台 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 上的文件,但我似乎无法在服务器 PC 上获取文件。如何提取和保存文件?是因为我缺少标题吗?我应该用什么?谢谢

【问题讨论】:

    标签: python node.js rest file


    【解决方案1】:

    我会根据问题中的语法猜测并说您正在使用 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}`)
    })
    

    【讨论】:

    • 谢谢!但是从客户端 PC(python 脚本),什么代码会上传文件?
    • @golu 与您提出的关于如何处理上传到 Nodejs 服务器的文件的问题不同吗?
    • 是的,也许是这样。那我需要一个不同的问题吗?我也被困在那部分..
    • @golu,我会这么说,如何使用 Python 通过 HTTP POST 请求发送文件与如何在 Node.js 中处理服务器端有很大不同
    • 请在此处回答后续问题:stackoverflow.com/questions/43266317/…。我收到与 multer 相关的错误
    猜你喜欢
    • 1970-01-01
    • 2021-10-01
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    相关资源
    最近更新 更多