2025-08-01 11:39:06 +08:00

92 lines
3.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 代码来源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();