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