Eli*_*ias 6 binary post node.js express body-parser
我使用邮递员向我的服务器发送以下请求:
我尝试使用以下代码访问应用程序中的图像:
应用程序.js
var express = require('express');
var bodyParser = require('body-parser');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
app.use(bodyParser.raw({
type: 'image/png',
limit: '10mb'
}));
app.use('/', indexRouter);
app.use('/users', usersRouter);
module.exports = app;
Run Code Online (Sandbox Code Playgroud)
index.js(路由器)
var express = require('express');
const router = express.Router();
var Jimp = require('jimp');
/* GET home page. */
router.get('/', function(req, res) {
res.render('index', { title: 'Express' });
});
router.post('/a', function(req, res) {
var image = req.body;
try{
Jimp.read(image, (err, input) => {
if (err) throw err;
input.sepia();
input.getBuffer(Jimp.AUTO, (err, output) => {
if(err) throw err;
res.writeHead(200, {'Content-Type': 'image/png' });
return res.end(output, 'binary');
});
});
}catch (err){
return res.status(400).send(`Error: ${err.message}`).end();
}
});
module.exports = router;
Run Code Online (Sandbox Code Playgroud)
我首先使用表单(在express-fileupload库的帮助下)发送图像,效果很好,所以我知道问题必须出现在该行之前的某个地方var image = req.body。为了让 Jimp 函数(图像处理库)工作,图像必须是代表 png 图像的缓冲区。运行时console.log(image),控制台输出{}。
有人可以告诉我一种在将 png 作为二进制文件发送时将其读取为缓冲区的方法吗?