在前端设备上,我使用Python运行OpenCV。然后,我将计算的图像发送到服务器以进行进一步处理。我的问题是我无法使用Express解码图像。
我从这个前端设备发送图像(在Python 2.7中):
import requests
url = "http://10.1.10.194:3000"
files ={'image':open('testimg.jpg','rb')}
r = requests.post(url,files=files)
这会成功向我的Express应用程序发送一个post命令,该应用程序会听到post请求并执行以下操作:
app.post('/', function(request, respond) {
console.log(request.headers)
var image = request.body
fs.writeFile('test.jpg', image, function(err){
if (err) throw err
console.log('File saved.');
});
respond.end('thanks');
});
我知道我正确接收图片,因为标题正确列出了文件大小,但是当我打印图像时,它只是一个文本文件[对象对象]。
Express应用程序的输出位于:
{ host: '10.1.10.194:3000',
'content-length': '14551',
'accept-encoding': 'gzip, deflate',
accept: '*/*',
'user-agent': 'python-requests/2.9.1',
connection: 'keep-alive',
'content-type': 'multipart/form-data; boundary=e664d9584c484962bfe4d1577bd4d91b' }
POST / 200 15.754 ms - -
File saved.
我的Express应用程序成功加载了body-parser,但我似乎无法弄清楚如何从request.body中获取我的原始数据。欢迎任何建议。谢谢!
答案 0 :(得分:2)
您是否尝试使用Multer模块?
var multer = require('multer');
var upload = multer({dest: './uploads/'});
app.post('/', upload.single('file'), function(request, respond) {
if(request.file) console.log(request.file);
}
答案 1 :(得分:0)
您需要等待提取帖子数据。
if (request.method == 'POST') {
var body = '';
request.on('data',function(data) { body += data; });
request.on('end', function(data) {
fs.writeFile('test.jpg', body, function(err){ ... })
});