在node.js中放置图像文件的位置是什么?

18 浏览
0 Comments

在node.js中放置图像文件的位置是什么?

我在Linux中拥有以下目录结构,其中仅有3个文件:

/home/nikhil/test_img/

  • server.js
  • page.html
  • pic.jpg

这是一个简单的node.js hello world设置,没有使用express或任何其他库

server.js的代码

var http = require("http"), fs = require('fs');
var path = require('path');
var root = path.dirname(require.main.filename);
var filePath = path.join(root + '/page.html');
var port = 8889;
function onRequest(request, response) {
    fs.readFile(filePath, function (err, html) {
        if (err) {
            throw err; 
        }    
        response.writeHead(200, {'Content-Type': 'text/html'});
        response.write(html);
        response.end();
    }); 
}
http.createServer(onRequest).listen(port, function () {
  console.log("Server has started at port " + port);
});

这简单地创建了服务器,当向localhost:8889发出任何请求时,会显示page.html

page.html的代码

Hello World

image


这是一个简单的网页,带有Hello World标题和一张图片。

现在,错误在于当我在浏览器上点击localhost:8889时,页面加载时图片不会被显示。但是,当我通过我的浏览器直接打开网页时(不通过node),图片就会被显示。

我还尝试了将src更改为

  • \"/home/nikhil/test_img/page.html\"
  • \"file:///home/nikhil/test_img/page.html\"
  • \"localhost:8889/page.html\"

    但都没有成功

此外,我尝试使用在JavaScript中打印我的位置

打印出的路径是

/

而当我直接在浏览器中运行页面时(不通过node),路径为

/home/nikhil/test_img/page.html

我需要将图片文件放在哪里才能使其工作?

admin 更改状态以发布 2023年5月22日
0
0 Comments

你的代码表示每个请求都应该提供对应于filePath的文件,即html文件page.html。这对于页面请求本身来说是可以的,但是你的html页面中的img标签会创建一个单独的请求去获取图片pic.jpg,而这个图片应该与页面在同一路径下。但是,你的请求处理程序并没有返回所需的img文件,这意味着它应该返回带有头部Content-type: image/jpg的内容,而是再次响应HTML页面的内容和头部Content-Type:text/html

你需要根据请求内容的不同来区分需要提供的内容。

0