【问题标题】:Can not deliver image files through phantomjs webserver无法通过 phantomjs webserver 传递图像文件
【发布时间】:2016-04-13 16:05:11
【问题描述】:

我正在尝试让 phantomjs 网络服务器为我工作

我想提供 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,请不要告诉我使用其他服务器

谢谢

【问题讨论】:

标签: javascript node.js phantomjs


【解决方案1】:

这对我有用(假设你有响应对象):

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

【讨论】:

  • 您好,谢谢您的参与,这是一个 3 年前的问题,它可能适用于今天的版本...您使用的 phantomjs 版本是什么?
【解决方案2】:

如果您正在读取 PNG 文件,我相信您的 fs.open() 调用应该将“rb”用于二进制读取模式。模式“r”适用于您的 html,因为它是文本,但虽然它仍会读取 PNG 文件并将其提供给浏览器,但图像数据不可渲染。

【讨论】:

    【解决方案3】:

    您正在尝试像使用同步函数一样使用异步函数。您使用的所有文件系统函数(exists()open()read())都是异步的,并尝试调用具有所需结果的回调(您没有提供);他们不return它。要么使用这些函数的同步版本,要么(更好)学习如何使用异步 I/O。

    【讨论】:

    • 示例代码没有任何异步。这是 PhantomJS 和 Node.js 脚本!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多