在node.js中获取从post发送的图像

我需要使用python发送图像,然后将其下载到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,但都没有工作。

所以我终于用了Muller的想法……错误地命名关键是为什么我不能正确地使用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.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')})