/** * 代码来源:http://www.thinkphp.cn/topic/27567.html * 如需编译请使用 pkg -t node12-win word.js 命令编译成word.exe文件 */ var service = { http: require('http'), url: require('url'), querystring: require('querystring'), fs: require('fs'), config: { timeout: 60000, charset: 'utf8', port: 10101, host: '127.0.0.1' }, router: { index: function (res, query) { res.end('Server is running!'); }, check: function (res, query) { var result = {status: 1, info: 'success'}; result = JSON.stringify(result); if (typeof query.callback == 'string') { result = query.callback + '(' + result + ')'; } res.end(result); }, word: function (res, query) { var _this = service; var result = {status: 0, info: 'error'}; if (typeof query.file == 'string') { var img = query.file.match(/file:\/\/+(localhost)?(\S+\.(png|jpg|jpeg|gif|bmp))/i); console.log(img); if (img) { var base64 = _this.base64_encode(img[2]); result.status = 1; result.index = query.index; result.info = 'data:image/' + img[3] + ';base64,' + base64; } } result = JSON.stringify(result); if (typeof query.callback == 'string') { result = query.callback + '(' + result + ')'; } res.end(result); } }, start: function () { var _this = this; var Server = _this.http.createServer(function (req, res) { var URL = _this.url.parse(req.url); var receive = []; var router = null; switch (URL.pathname) { case '/word': router = _this.router.word; break; case '/check': router = _this.router.check; break; default: router = _this.router.index; } req.setEncoding(_this.config.charset); req.addListener('data', function (data) { receive.push(data); }); res.writeHead(200, {'Content-Type': 'text/plain'}); res.on("close", function () { console.log("res closed"); }); req.on("close", function () { console.log("req closed"); }); req.addListener('end', function () { router(res, _this.querystring.parse(URL.query)); }); }); Server.listen(_this.config.port, _this.config.host, 1024); Server.setTimeout(_this.config.timeout, function (cli) { cli.end('timeout\n'); }); console.log('Server running at http://' + _this.config.host + ':' + _this.config.port); }, //base64 base64_encode: function (file) { var bitmap = this.fs.readFileSync(file); return new Buffer.from(bitmap).toString('base64'); } }; service.start();