92 lines
3.1 KiB
JavaScript
Raw Normal View History

2025-08-01 11:39:06 +08:00
/**
* 代码来源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();