繁体   English   中英

从node.js中的帖子中获取图像

[英]Get image sent from post in node.js

我需要使用python通过post发送图像,然后在node.js服务器端下载它。

Python代码:

import requests
from PIL import Image
import json

url = 'http://127.0.0.1:8080/ay'
files = {'file': open('image.jpg', 'rb')}
r = requests.post(url, data = files)

Node.js代码:

var app = express();
app.use(bodyparser.json({ limit: '50mb' }));
app.use(bodyparser.urlencoded({ limit: '50mb', extended: true }));

app.post('/ay', function(req, res) {
    var base64Data = req.body.file
    require("fs").writeFile("out.png", base64Data, 'base64', function(err) {
        console.log(err);
    });

    res.send('done');
});

但我似乎无法在服务器上正确下载文件,所以我想知道python使用什么格式打开图像以及如何修复node.js代码以便它可以正确下载图像。

编辑:代码有一些问题,我现在尝试使用multer但似乎无法使其正常工作。

Python代码:

import requests

url = 'http://127.0.0.1:8080/ay'
files = {'file': open('image.jpg', 'rb')}
r = requests.post(url, files = files)

Node.js代码:

var express = require('express');
var multer  = require('multer')
var upload = multer({ dest: 'uploads/' })
var app = express();

app.post('/ay', upload.single('avatar'), function (req, res, next) {
    console.log(req.file)
    res.send("done");
});

app.post('/ay', upload.array('photos', 12), function (req, res, next) {
    console.log(req.files)
    res.send("done");
});

我已经尝试了upload.single和upload.array,但都没有工作。

所以我终于弄清楚使用multer ...错误地命名密钥是为什么我不能正确使用multer。

蟒蛇:

import requests
url = 'http://127.0.0.1:8080/ay'
files = {'file': open('image.jpg', 'rb')}
r = requests.post(url, files = files)

Node.js的:

var express = require('express');
var multer  = require('multer')
var upload = multer({ dest: 'uploads/' })
var app = express();

app.post('/ay', upload.array('file', 12), function (req, res, next) {
    console.log(req.files)
    res.send("done");
});

看看这篇博客文章,其中提供了有关如何在node.js中访问上传文件的示例

在该示例中,在加载bodyParser中间件之后,您可以访问名为req.files的对象,其中包含有关上载文件的信息。

执行console.log(req.files)并查看它显示的内容。

bodyParser中间件可用于读取Express v3中已上载的文件,这些文件已不再维护。

如果使用v4或更高版本,则可以使用connect-multiparty中间件,如下所示:

var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
app.post('/ay', multipartMiddleware, function(req, resp) {
  console.log(req.body, req.files);
  // don't forget to delete all req.files when done 
});

另外,我认为你的Python代码没有正确上传。 试试:

requests.post('http://127.0.0.1:8080/ay', files={'image.jpg': open('image.jpg', 'rb')})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM