Javascript 从phantomjs Web服务器返回二进制结果

Javascript 从phantomjs Web服务器返回二进制结果,javascript,base64,mime-types,phantomjs,Javascript,Base64,Mime Types,Phantomjs,有没有办法将PhantomJS Web服务器的结果作为二进制文件返回 更具体地说,如果我将一个页面的屏幕截图呈现为base64,那么我可以将这个base64字符串转换为二进制并返回,以便客户端将其作为图像接收吗 这就是我到目前为止所做的,我已经注释掉了一些显然不起作用的实验 response.statusCode = 200; response.setHeader("Content-Type", "image/png"); //response.setHeader("Content-Encodi

有没有办法将PhantomJS Web服务器的结果作为二进制文件返回

更具体地说,如果我将一个页面的屏幕截图呈现为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();       
Ideas?

解决方案是在web服务器模块和网页模块内部生成二进制内容

结果如下(假设定义了页面):


您只需将编码设置为二进制即可:

response.statusCode = 200;
response.headers = {
    'Cache': 'no-cache',
    'Content-Type': 'image/png'
};
response.setEncoding('binary');
response.write(atob(page.renderBase64('png')));
response.close();

绝对没有必要使用page.evaluate!只是慢一点!我还将内容类型设置为webserver示例,这样我就可以将phantomjs屏幕截图和呈现的代码与我的live firefox呈现的解析输出进行比较。网络服务器太酷了。例如,你也可以使用Selenium和UnitTest自动化这两个测试。
atob
?@devius its解码BASE64数据:刚刚偶然发现:二进制编码在当前的PhantomJS版本中被破坏()你仍然可以使用旧版本,或者尝试编译你自己的版本。你可以用二进制编码脚本运行旧版本,对吗?你在这个问题上有什么进展吗?
response.statusCode = 200;
response.headers = {
    'Cache': 'no-cache',
    'Content-Type': 'image/png'
};
response.setEncoding('binary');
response.write(atob(page.renderBase64('png')));
response.close();