Nodejs 为什么本地的图片就显示不出来。
Nodejs 为什么本地的图片就显示不出来。
写了一个显示图片的小程序,可为什么电脑本地的图片就显示不出来,而网上的图片能够正常显示? 下面是代码,testimg2能正常显示,testimg1就显示不出来,这两个除了路径不同,其他地方使用都是完全一样的。 var photos = []; photos.push({ name:‘testimg1’, path:‘C:/Users/Administrator/Desktop/nodejs/chapter8/photo/routes/test.png’ }); photos.push({ name:‘testimg2’, path:‘http://b.hiphotos.baidu.com/image/pic/item/3812b31bb051f819e7439e54d8b44aed2e73e74e.jpg’ }); exports.list=function(req,res){ res.render(‘photos’,{ title:‘Photos’, photos:photos }); };
标题:Node.js 为什么本地的图片无法显示?
内容:
在Node.js中,如果你发现本地图片无法显示,但网络图片可以正常显示,这通常是因为本地文件路径不正确或服务器没有正确处理静态资源。以下是一些常见的原因及解决方法。
原因分析
- 路径问题:确保本地图片的路径是正确的,并且与实际文件位置匹配。
- 静态资源处理:需要配置Node.js应用以正确处理静态文件(如图片)。
示例代码
假设你正在使用Express框架,你需要配置一个静态文件夹来提供图片。
const express = require('express');
const path = require('path');
const app = express();
const port = 3000;
// 配置静态文件夹
app.use('/static', express.static(path.join(__dirname, 'public')));
// 处理图片展示的路由
app.get('/photos', (req, res) => {
const photos = [
{ name: 'testimg1', path: '/static/test.png' },
{ name: 'testimg2', path: 'http://b.hiphotos.baidu.com/image/pic/item/3812b31bb051f819e7439e54d8b44aed2e73e74e.jpg' }
];
res.render('photos', { title: 'Photos', photos });
});
app.listen(port, () => {
console.log(`Server is running on http://localhost:${port}`);
});
解释
-
静态文件夹配置:
app.use('/static', express.static(path.join(__dirname, 'public')));
- 这行代码告诉Express在URL路径为
/static
时,查找public
文件夹下的静态文件。
- 这行代码告诉Express在URL路径为
-
图片路径:在数组中的图片路径应指向配置的静态文件夹,例如
/static/test.png
。
文件结构
确保你的项目文件夹结构如下:
project-root
│
├── public
│ └── test.png
│
├── views
│ └── photos.ejs
│
├── app.js
└── package.json
模板渲染
确保你的模板文件(如photos.ejs
)正确引用了图片路径。
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
</head>
<body>
<% photos.forEach(function(photo) { %>
<img src="<%= photo.path %>" alt="<%= photo.name %>">
<% }) %>
</body>
</html>
通过以上步骤,你应该能够正确地显示本地图片。如果仍然有问题,请检查控制台错误信息,确保路径和配置都正确无误。
楼主把代码格式化一下吧…
用相对路径试试
用相对 web root 的路径试试
其实在html的img元素中,src属性是要请求服务器的,你的服务器没有处理,就直接给了一个c:/XX/XX/x.png。 这就是你问题的原因。基础很重要!