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