将图片传递给HTML img标签,可以通过以下步骤实现:
下面是具体的步骤:
你可以使用以下命令安装这些依赖包:
npm install express mongoose handlebars multer path fs
app.js
的文件,并添加以下代码:const express = require('express');
const mongoose = require('mongoose');
const handlebars = require('handlebars');
const multer = require('multer');
const path = require('path');
const fs = require('fs');
// 创建Express应用
const app = express();
// 连接MongoDB数据库
mongoose.connect('mongodb://localhost/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log('MongoDB连接成功'))
.catch(err => console.log('MongoDB连接失败', err));
// 创建图片上传的存储引擎
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, 'uploads/');
},
filename: (req, file, cb) => {
cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
}
});
// 创建图片上传中间件
const upload = multer({ storage: storage });
// 定义图片模型
const Image = mongoose.model('Image', { path: String });
// 设置Handlebars模板引擎
app.set('view engine', 'handlebars');
app.engine('handlebars', handlebars({
defaultLayout: 'main',
layoutsDir: __dirname + '/views/layouts'
}));
// 设置静态文件目录
app.use(express.static(path.join(__dirname, 'public')));
// 处理根路径的GET请求
app.get('/', (req, res) => {
// 查询所有图片
Image.find({}, (err, images) => {
if (err) {
console.log('查询图片失败', err);
res.status(500).send('查询图片失败');
} else {
// 渲染HTML页面,并将图片路径传递给模板引擎
res.render('index', { images: images });
}
});
});
// 处理图片上传的POST请求
app.post('/upload', upload.single('image'), (req, res) => {
// 创建图片模型并保存到数据库
const image = new Image({ path: req.file.path });
image.save((err) => {
if (err) {
console.log('保存图片失败', err);
res.status(500).send('保存图片失败');
} else {
res.redirect('/');
}
});
});
// 启动服务器
app.listen(3000, () => console.log('服务器已启动,访问 http://localhost:3000'));
index.handlebars
的文件,并添加以下代码:<!DOCTYPE html>
<html>
<head>
<title>图片展示</title>
</head>
<body>
<h1>图片展示</h1>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="image" accept="image/*">
<button type="submit">上传图片</button>
</form>
{{#each images}}
<img src="{{this.path}}" alt="图片">
{{/each}}
</body>
</html>
main.handlebars
的文件,并添加以下代码:<!DOCTYPE html>
<html>
<head>
<title>图片展示</title>
</head>
<body>
{{{body}}}
</body>
</html>
public
的文件夹,并在其中创建一个名为uploads
的文件夹。node app.js
启动服务器。现在,你可以通过访问http://localhost:3000
来上传和展示图片了。上传的图片将保存在public/uploads
文件夹中,图片路径将传递给Handlebars模板引擎,并在HTML页面中使用img标签显示。
领取专属 10元无门槛券
手把手带您无忧上云