无法通过 phantomjs 网络服务器传送图像文件
Can not deliver image files through phantomjs webserver
我正在尝试TP get Phantomjs WebServer for me
我想提供 2 个文件,html 文件和一个 png 图像文件,html 文件提供得很好并在浏览器中正确呈现,但 png 文件不是
这是服务器的代码
var fs = require('fs');
function loadFile(name){
if(fs.exists(name)){
console.log(name+ " File exist");
return fs.open(name,"r");
}else {
console.log("File do not exist");
}
}
var server, service;
server = require('webserver').create();
service = server.listen(8080, function (request, response) {
if(request.url.split(".")[1] === "html" ){
var fi = loadFile("./test.html");
response.statusCode = 200;
response.write(fi.read());
fi.close();
response.close();
}else if (request.url.split(".")[1] === "png"){
var fi = loadFile("./output_87.png");
response.headers = {"Content-Type":"image/png"};
response.statusCode = 200;
response.write(fi.read());
fi.close();
response.close();
}
});
这是 HTML 文件标记
<html>
<head><title>title</title></head>
<body><h1> Hello world </h1>
<img src="output_87.png" alt="image">
</body>
</html>
在浏览器中查看此文件时,不会呈现 PNG 文件,即使我尝试将浏览器指向 PNG 文件,它也不会呈现它
我使用Chrome开发人员工具检查了网络状态,并确认浏览器已完全下载该文件
怎么了?
顺便说一句,我必须使用PhantomJS,请不要告诉我使用其他服务器
谢谢
乔
这对我有用(假设你有响应对象):
var fs = require("fs");
var image = fs.open("image.png", "rb");
var data = image.read();
image.close();
response.setHeader("Content-Type", "image/png");
response.setEncoding("binary");
response.write(data);
response.close();
我相信如果你正在读取PNG文件,你的fs.open()调用应该使用"rb"作为二进制读取模式。模式"r"适用于您的 html,因为它是文本,但是虽然它仍然会读取 PNG 文件并将其提供给浏览器,但图像数据不可渲染。
您正在尝试使用异步函数,就好像它们是同步的一样。您使用的所有文件系统函数(exists()
、open()
和 read()
)都是异步的,并尝试调用回调(您没有提供)以获得所需的结果;他们不return
。要么使用这些函数的同步版本,要么(更好)学习如何使用异步 I/O。
相关文章:
- 使用JSP从服务器检索和显示图像
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 客户端服务器REST API captcha实现
- 正在将base64 jpeg从input-type=file上传到服务器
- Webpack开发服务器和React服务器端渲染
- 提示使用服务器端事件处理程序激活JavaScript
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 如何使用Socket.io将命令从客户端发送到服务器
- jQuery blueimp文件上传:将N-1个文件上传到IE中的服务器
- 使用jasmine模拟对服务器的调用
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 通过ajax将坐标传递到php服务器端,并在处理后检索到javascript
- 如何使用Javascript将空数组发送到PHP服务器
- 如何在HTML中显示服务器对象变量
- 如何配置分析以将数据发送到我自己的服务器
- 我无法使用angularJs($http)访问服务器
- 如何检测第三方广告服务器请求
- 如何:浏览器将JSON发送到服务器
- 无法通过 phantomjs 网络服务器传送图像文件