首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将图片传递给html img tag,nodejs mongoose express handlebar

将图片传递给HTML img标签,可以通过以下步骤实现:

  1. 在Node.js中使用Mongoose连接MongoDB数据库,使用Express框架创建一个服务器。
  2. 在服务器端,使用Handlebars模板引擎渲染HTML页面。
  3. 在HTML页面中,使用img标签来显示图片。
  4. 在服务器端,将图片的路径传递给Handlebars模板引擎,然后在HTML页面中使用该路径设置img标签的src属性。

下面是具体的步骤:

  1. 安装所需的依赖包:
    • Express:用于创建服务器和处理HTTP请求。
    • Mongoose:用于连接MongoDB数据库。
    • Handlebars:用于渲染HTML页面。
    • Multer:用于处理文件上传。
    • Path:用于处理文件路径。
    • fs:用于读取文件。

你可以使用以下命令安装这些依赖包:

代码语言:txt
复制

npm install express mongoose handlebars multer path fs

代码语言:txt
复制
  1. 创建一个名为app.js的文件,并添加以下代码:
代码语言:javascript
复制
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'));
  1. 创建一个名为index.handlebars的文件,并添加以下代码:
代码语言:html
复制
<!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>
  1. 创建一个名为main.handlebars的文件,并添加以下代码:
代码语言:html
复制
<!DOCTYPE html>
<html>
<head>
  <title>图片展示</title>
</head>
<body>
  {{{body}}}
</body>
</html>
  1. 创建一个名为public的文件夹,并在其中创建一个名为uploads的文件夹。
  2. 运行node app.js启动服务器。

现在,你可以通过访问http://localhost:3000来上传和展示图片了。上传的图片将保存在public/uploads文件夹中,图片路径将传递给Handlebars模板引擎,并在HTML页面中使用img标签显示。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Nodejs开发框架Express3.0开发手记–从零开始

目录 此文重点介绍Express3.0的开发框架,其中还会涉及到Mongoose,Ejs,Bootstrap等相关内容。...安装session-mongoose依赖库 D:\workspace\project\nodejs-demo>npm install session-mongoose D:\workspace\project...\nodejs-demo\node_modules\session-mongoose\node_modules\mongoose\node_modules\mongodb\node_modules\bson...原理是在框架内每次赋值,把我们刚才手动值的过程,让框架去完成了。 8. 页面提示 登陆的大体我们都已经讲完了,最后看一下登陆失败的情况。...如果你也出现图片显示的内容,那么恭喜你了。 Nodejs使用Express3.0框架的第一步你已经完成了,并且还使用了ejs,bootstrap,mongoose库的使用。 希望此文对大家有所帮助。

5.8K120

arkTS开发鸿蒙OS个人商城案例【2024最新 新年限定开发案例QAQ】

命名参数机制:父组件通过指定参数传递给子组件的状态变量,为父子传递同步参数的主要手段。示例:CompA: ({ aProp: this.aProp })。...从父组件初始化:父组件使用命名参数机制,将指定参数传递给子组件。本地初始化的默认值在有父组件值的情况下,会被覆盖。 初始化子节点:组件中状态变量可以传递给子组件,初始化子组件对应的状态变量。...除了Web应用外,NodeJS也被应用在许多方面,本文盘点了NodeJS在其它方面所开发的十大令人神奇的项目,这些项目涉及到应用程序监控、媒体流、远程控制、桌面和移动应用等等。...console.log(JSON.stringify(this.items)) } build(){ // 标题部分 Column(){ // 自定义组件之间参...("Users", Users); const shangpin = mongoose.model("Shangpin", Shangpin); const fenlei = mongoose.model

45510
  • mongoDB从入门到实战全套小白教程

    图片.png 4:记住自己安装的路径 C:\Program Files\MongoDB\Server\4.0\ ? 图片.png 5:在 C 盘安装了 mongodb ?...官方教程:http://www.runoob.com/nodejs/nodejs-tutorial.html 1:安装node 端开发框架和环境都是需要 Node.js ,先安装node.js开发环境,...生成四个文件夹,主文件app.js与配置信息文件packetage.json bin是项目的启动文件,配置以什么方式启动项目,默认 npm start public是项目的静态文件,放置js css img...等文件 routes是项目的路由信息文件,控制地址路由 views是视图文件,放置模板文件ejs或jade等(其实就相当于html形式文件啦~) express这样的MVC框架模式,是一个Web项目的基本构成...router = express.Router(); var mongoose = require('mongoose'); var user = require('..

    1.9K30

    Node.js基于Express框架搭建一个简单的注册登录Web功能

    这个小应用使用到了node.js  bootstrap  express  以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注明一下版本...还没有装express的可以移步到 这里 看看express框架的获取安装 1.简单地项目初始化 进入你的nodejs安装路径下边,如图,然后执行命令  express -e test  (这里把项目名设置为...好现在开始解析如何构建这个小项目: 因为我们直接使用了后缀名 .html ,所以我们要先修改一下ejs模板  ,再把原来views目录下模板文件后缀改成 .html var app = express(...nodejs驱动,可以在异步的环境下执行。...期间可以自己查看mongodb数据库里边nodedb --> user 数据的改动,使用mongoVUE或者命令查看) 需要代码的可移步至Github:  https://github.com/imwtr/nodejs_express_login_register

    7.2K10

    最新HTML5学习路线整合

    怎么学HTML5 HTML5是万维网的核心语言,标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改,一方面提升了用户体验,另一方面HTML5技术跨平台,适配多终端,改变了传统开发者需针对不同操作系统进行研发的局面...运算符与优先级 流程控制-if..else 流程控制-switch…case 流程控制-while、do..while、for循环 break、continue语法 函数定义与调用 全局变量与局部变量 函数参与返回值...新功能 canvas绘图 svg绘图 音频与视频 本地存储与离线存储 地理信息 web Worker web Socket NodeJS基础 node与npm概念及使用 node模块方式 node常用内置模块...node爬虫与文件自动化处理 node搭建服务器与简单路由 mongodb非关系数据库 mongodb安装与db操作 mongodb增删改查 mongodb与node结合开发 mongoose数据建模...mongoose与node结合开发 express框架 中间件与ejs模板引擎 Robomongo与postman工具 express+mongoose搭建后端框架 设计Restful API 实战:

    1.9K40

    基于 Express 应用框架的技术方案选型浅谈

    设计完成后将开发态页面使用 Webpack 打包构建,构建目录为服务端 Express 的静态资源目录。首屏渲染的工作交给 Ejs 模板引擎(事实上也可以直接使用 HTML 字符串渲染)进行处理。...# 静态资源目录 │ ├── css/ # 样式 │ ├── imgs/ # 图片...Vue 技术方案选型 2018年6月,使用 Vue 设计了服务端渲染的 Express 应用,大致技术选型如下: Mongoose Nuxt Vue lokka Muse-UI 客户端和服务端同构代码的...# Nuxt构建目录(Nuxt预设目录) ├── assets # 资源目录(Nuxt预设目录) │ ├── img...# 项目打Tag脚本 └── tsconfig_node.json # TypeScript配置文件 运行脚本设计 在package.json中的配置脚本如下: "build

    7K30

    Node.js 开发实践,前端工程师的 MVP 利器

    本文经作者授权转载至公众号 “Nodejs技术栈”,作者:愚坤,掘金优秀作者,一名没上高中的前端工程师,目前就职水滴筹。...当然,这个过分的js帮助了我很多,从被后端大佬揪着耳朵按到工位上温声细语的说:“我套完页面样式乱了,帮我调下样式”,演变成大佬气冲冲的跑到我工位慈眉善目的拍着桌子说:“TM接口参数错了”。.../config.js'); const dbs = async function (env) { const mongoose = require('mongoose'); mongoose.connect...const mongoose = require('mongoose'); const { db } = global; // 创建Model const model = new mongoose.Schema...coachId:String, // 教练ID }, { timestamps: true, // 自动增加创建、更新时间 }); const dbManage = db.model('tag

    89720

    前端开发者不得不知道的18个常用的网站

    1.npm NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用...允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用 界面如下: 2.Express Express基于 Node.js 平台,快速、开放、极简的 Web 开发框架 关于Express的介绍可参考...Bootstrap、jQuery、React、Vue.js 一样优秀的前端开源项目提供稳定、快速、免费的前端开源项目 CDN 加速服务 截止目前共收录了 3606 个前端开源项目 界面如下: 4.mongoose...所有样式都基于class,只需为 HTML 元素指定class,样式立刻生效 界面如下: 8.RAP2 RAP2是一个可视化接口管理工具,通过分析接口结构,动态生成模拟数据,校验真实接口正确性, 围绕接口定义...国内功能很强大且图标内容很丰富的矢量图标库,提供矢量图标下载、在线存储、格式转换等功能 界面如下: 15.favicon favicon提供ico图标在线制作、快速ico图标制作、icon图标制作、可以将png转ico、所有图片

    1.4K10

    简易漫画网站搭建-漫画喵Server版

    前端的话,使用标准的Html,Css和Js就可以。后台是个API Server,Python + Flask 或者 Nodejs + Express 都是不错的选择(使用起来很简单。。。)...├── cartoon.html ├── chapter.html ├── css ├── img ├── index.html ├── js...package.json 是nodejs的包管理器,在这里可以定义依赖。我们这里只依赖Express。...3) get_img_list 这个接口用来返回漫画的具体章节的图片的URL,用户需要输入漫画名(cartoon)和章节名(chapter)。注意要修改自己的HOST的地址。...懒加载 有一点需要注意,在漫画图片的页面中,通常会出现大量的图片,如果只是简单的使用 img 标签的话,可能会导致浏览器同时加载所有的图片,如果网速不好的话,我们的体验也会相当的差(局域网请无视)。

    2.4K20

    什么是跨域?解决方案有哪些?

    中间件代理跨域 9、 WebSocket协议跨域 一、 通过jsonp跨域 通常为了减轻web服务器的负载,我们把js、css,img等静态资源分离到另一台独立域名的服务器上,在html页面中再通过相应的标签从不同域名下加载静态资源...三个页面,不同域之间利用iframe的location.hash值,相同域之间直接js访问来通信。...上面三个场景的跨域数据传递 用法:postMessage(data,origin)方法接受两个参数 data: html5规范支持任意基本类型或可复制的对象,但部分浏览器只支持字符串,所以参时最好用JSON.stringify...origin: 协议+主机+端口号,也可以设置为"*",表示可以传递给任意窗口,如果要指定和当前窗口同源的话设置为"/"。...user=admin', true); xhr.send(); 2)中间件服务器: var express = require('express'); var proxy = require('http-proxy-middleware

    15.1K32

    JS跨域请求解决方案

    .等dom标签,还有样式中background:url().@font-face()等文件外链 3.)...中间件代理跨域 WebSocket协议跨域 (1) 通过jsonp跨域 通常为了减轻web服务器的负载,我们把js.css,img等静态资源分离到另一台独立域名的服务器上,在html页面中再通过相应的标签从不同域名下加载静态资源...:none;"> var iframe = document.getElementById('iframe'); // 向b.htmlhash值...上面三个场景的跨域数据传递 用法:postMessage(data,origin)方法接受两个参数 data: html5规范支持任意基本类型或可复制的对象,但部分浏览器只支持字符串,所以参时最好用JSON.stringify...origin: 协议+主机+端口号,也可以设置为”*”,表示可以传递给任意窗口,如果要指定和当前窗口同源的话设置为”/“。

    5.1K10
    领券