我需要帮助: 我在节点JS中运行express,并且试图通过HTTP请求和/或响应传递图像
快速初始化:
var app = express();
app.engine('.html', require('ejs').__express);
app.set('views', __dirname + '/views');
app.set('view engine', 'html');
app.use(express.static(__dirname + '/public'));
app.use(bodyParser.text({type:'text/plain'}));
Http请求(位于index.html中的ajax):
var request = new XMLHttpRequest();
request.open('GET', '/request');
request.setRequestHeader('Content-Type', 'text/plain');
request.onreadystatechange = function() {
if(request.readyState == 4){
//do stuff with request.responseText
}
};
request.send('request for image xxxx');
快速处理请求:
app.get('/request', (req, res) => {
if(req.body == 'request for image xxxx')
res.status(200).send(???);
//other stuff
});
我的中间件'bodyParser'确实支持其他经过url编码的数据类型,但是我不知道该怎么做,所以我被迫只使用文本/纯文本消息,除非出现问题当我要发送图像时。
我猜我也许可以使用缓冲区来做到这一点,但是我绝对不知道它的语法是什么,而我已经在使用的HTTP处理语法可能非常复杂。我对HTTP协议很陌生。
答案 0 :(得分:0)
您可以将图像编码为base64并将其作为文本发送。在服务器上收到后,将其写为图像。
var base64Data = 'base64encoded'
require("fs").writeFile("image.png", base64Data, 'base64', function(err) {
console.log(err);
});