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

Return binary result from phantomjs webserver

本文关键字:二进制 结果 返回 服务器 phantomjs Web      更新时间:2023-09-26

有没有办法以二进制形式从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();       

想法?

您只需将Encoding设置为binary,它就会工作:

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

解决方案是在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();