我正在开发一个node.js应用程序,我想知道这是否可行,如果可行,如何:启动服务器之后,node.js应该打开一个新窗口服务器端并显示从代码生成的图像。
答案 0 :(得分:0)
在服务器端打开任何窗口都不是好方法,因为服务器将被各种用户访问。
但是如果你想这样做,可以使用nodejs的child_process模块并使用扩展名执行该图像。
实施例
var exec = require('child_process').exec,
child;
child = exec('<image with location & extension>',
function (error, stdout, stderr) {
console.log('Image opened');
if (error !== null) {
console.log('exec error: ' + error);
}
});
带快递的Hello world示例。
var express = require('express');
var app = express();
app.get('/', function (req, res) {
var exec = require('child_process').exec,
child;
child = exec('a.jpg',
function (error, stdout, stderr) {
console.log('Image opened');
if (error !== null) {
console.log('exec error: ' + error);
}
});
res.send('Hello World!');
});
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
答案 1 :(得分:0)
您可以使用open在浏览器中打开图片网址。
var open = require('open');
open('http://127.0.0.1/yourimage.png');
或者可以使用Node-Webkit而不是nodejs。
完整代码:
var fs = require('fs'),
http = require('http'),
url = require('url'),
open = require('open');
http.createServer(function(req, res) {
var request = url.parse(req.url, true);
var action = request.pathname;
if (action == '/yourimage.png') {
var img = fs.readFileSync('./yourimage.png');
res.writeHead(200, {
'Content-Type': 'image/png'
});
res.end(img, 'binary');
}
}).listen(8080, '127.0.0.1');
open('http://127.0.0.1/yourimage.png');
链接:
如果您使用node-webkit,您可以创建一个窗口(使用html / css)。
答案 2 :(得分:-2)
从我的经验来看,从服务器端打开一个新窗口是不可能的(在大多数情况下甚至是你的代码)。我要做的是使用一些javascript代码使页面上的内容动态化(例如,查看angularjs)并在同一页面上显示图像,即使图像是稍后在服务器端生成的。 另一个选项是从该图像的客户端代码中打开一个新选项卡。