简体   繁体   English

从phantomjs webserver返回二进制结果

[英]Return binary result from phantomjs webserver

Is there any way to return result froma PhantomJS webserver as binary? 有什么方法可以将PhantomJS webserver的结果作为二进制文件返回?

To be more specific, If I render a screenshot of a page as base64, can I then transform this base64 string into binary and return it so the client receives it as an image? 更具体地说,如果我将页面的屏幕截图呈现为base64,那么我可以将此base64字符串转换为二进制并返回它,以便客户端将其作为图像接收吗?

This is what I have so far, I've commented out some of my experiments which apparently doesnt work 这就是我到目前为止所做的,我已经评论了一些显然无效的实验

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? 想法?

You can just set the Encoding to binary, and it will work: 您可以将编码设置为二进制,它将起作用:

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

The solution is to use binary encoding in webserver module and page.evaluate inside web page module to generate binary content. 解决方案是在webserver模块中使用二进制编码 ,在web页面模块中使用page.evaluate来生成二进制内容。

the result is something like this (assuming page is defined) : 结果是这样的(假设页面已定义):

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();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM