6

有没有办法将 PhantomJS 网络服务器的结果作为二进制返回?

更具体地说,如果我将页面的屏幕截图呈现为 base64,我是否可以将此 base64 字符串转换为二进制并将其返回,以便客户端将其作为图像接收?

这是我到目前为止所拥有的,我已经注释掉了一些显然不起作用的实验

response.statusCode = 200;
response.setHeader("Content-Type", "image/png");
//response.setHeader("Content-Encoding","base64");
var base64 = page.renderBase64('png');
//var binary=atob(base64,"b");
response.write(base64  );
response.close();       

想法?

4

2 回答 2

6

您可以将编码设置为二进制,它将起作用:

response.statusCode = 200;
response.headers = {
    'Cache': 'no-cache',
    'Content-Type': 'image/png'
};
response.setEncoding('binary');
response.write(atob(page.renderBase64('png')));
response.close();
于 2013-10-31T15:20:55.673 回答
0

解决方案是在 webserver 模块中使用二进制编码,在 web 页面模块中使用page.evaluate来生成二进制内容。

结果是这样的(假设页面已定义):

response.statusCode = 200;
response.setEncoding("binary");
response.setHeader("Content-Type", "image/png");
var base64 = page.renderBase64('png');
var binary = page.evaluate(function (data) { return atob(data, "b");}, base64);
response.write(binary)
response.close();
于 2013-08-12T12:04:09.530 回答