Я отправляю на сервер следующий запрос с помощью почтальона:
Я пытаюсь получить доступ к изображению в своем приложении, используя следующий код:
app.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;
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;
Сначала я использовалФорма (с помощью библиотеки express-fileupload
) для отправки изображения, и это работало нормально, поэтому я знаю, что проблема должна быть где-то перед строкой var image = req.body
.Для работы функций Jimp (библиотеки обработки изображений) изображение должно быть буфером, представляющим изображение png.При запуске console.log(image)
консоль выводит {}
.
Может кто-нибудь показать мне способ чтения png как буфера, когда он отправляется в виде двоичного файла?