Node.js:如何在服务器端打开图像窗口?

时间:2015-10-18 08:20:35

标签: javascript node.js web server

我正在开发一个node.js应用程序,我想知道这是否可行,如果可行,如何:启动服务器之后,node.js应该打开一个新窗口服务器端并显示从代码生成的图像。

3 个答案:

答案 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:

如果您使用node-webkit,您可以创建一个窗口(使用html / css)。

Presentation nw.js

答案 2 :(得分:-2)

从我的经验来看,从服务器端打开一个新窗口是不可能的(在大多数情况下甚至是你的代码)。我要做的是使用一些javascript代码使页面上的内容动态化(例如,查看angularjs)并在同一页面上显示图像,即使图像是稍后在服务器端生成的。 另一个选项是从该图像的客户端代码中打开一个新选项卡。