【发布时间】:2016-06-15 18:50:06
【问题描述】:
我需要使用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 ,但都不起作用。
【问题讨论】:
-
你是否包含了中间件来处理 Node 中的 POST 数据?
-
是的!我刚刚编辑了我的代码以显示它。我在服务器端接收图像,但我不知道它是如何编码的,所以我似乎无法解码它。
-
bodyParser 对文件不起作用,它在documentation 的顶部这么说。您需要 multer、busboy 或其他支持文件的工具之一。此外,文件必须使用正确的密钥以
multipart/form发送,而不是 JSON。 -
我认为你的python应该是
r = requests.post(url, files=files)
标签: javascript python node.js multer