我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Node.js: express + MySQL + Vue实现图片上传

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Node.js: express + MySQL + Vue实现图片上传

        前段时间用Node.js: express + MySQL + Vue + element组件做了一个小项目,记录一下图片上传的实现。

        将图片存入数据库有两种方法:

                1,将图片以二进制流的方式存入数据库(数据库搬家容易,比较安全,但数据库空间的消耗大,访问会比较缓慢)

                2,将图片的存放地址存入数据库

        主要介绍第二种。

一,将图片以二进制流的方式存入数据库

        将图片转成base64格式,数据类型使用MEDIUMTEXT类型。

         或者将图片转为保存到数据库的Blob类型中。

二,将图片的存放地址存入数据库中。

1,编写接口url

        会运用到一个中间件,Multer,用于处理 multipart/form-data 类型的表单数据,它主要用于上传文件 :multer/README-zh-cn.md at master · expressjs/multer · GitHub

        Multer会添加一个body对象以及file或files对象到request对象中,body对象包含表单的文本域信息,file对象包含对象表单上传的文件信息。

(router和router_handle两个文件夹的意思是,将路径和执行方法分开,方便管理,具体内容可以查看  Node.js: express + MySQL的使用_express mysql_掉头发类型的选手的博客-CSDN博客

router下的文件

//引入multerconst multer = require('multer')//磁盘存储引擎,可以控制文件的存储,省略的话这些文件会保存在内存中,不会写入磁盘const storage = multer.diskStorage({    destination: function (req, file, cb) {        //控制文件的存储路径        cb(null, 'image/avatar')    },    filename: function (req, file, cb) {        //定义上传文件存储时的文件名        cb(null, file.originalname)    }})const upload = multer({ storage: storage })//接受单文件上传router.post('/update/avatar', upload.single('avatar'), userInfo_handler.updateAvatar)

        首先引入multer,配置图片的存储地址和文件名,省略的话上传的文件会保存在内存中,不会写入磁盘,在上传前要在项目的根目录下创建一个文件夹用于接收上传的文件,比如,我的代码中定义文件的存储路径为  cb(null, 'image/avatar')  ,要在目录下创建一个image文件夹,再在image文件夹下创建一个avatar文件夹。

        定义文件存储时的文件名一般会使用时间戳作为文件名,防止上传的文件重复(我这儿没有使用时间戳)。 

        upload.single('avatar') 表示接受单文件上传,avatar代表上传文件时的参数字段。多文件上传使用 .array(fieldname[, maxCount]) ,maxCount来限制最大的上传数量。

router_handler文件下的处理函数

exports.updateAvatar = (req, res) => {    // 定义更新头像的sql    const sql = 'update users set avatar=? where id=?;'    // console.log(req);    // console.log(req.body.id)    // console.log(req.file);    // console.log(req.file.destination);    const avatarUrl = `http://127.0.0.1:3007/${req.file.destination.split('/')[1]}/${req.file.originalname}`    // console.log(avatarUrl);    // 执行sql语句    db.query(sql, [avatarUrl, req.body.id], (err, results) => {        // sql语句执行错误        if(err) return res.cc(err)        // sql语句执行成功,但影响的条数部位1属于执行失败        if(results.affectedRows !== 1) return res.cc('更换头像失败!')        // 更换头像成功        res.cc('更换头像成功!', 0)    })}

传回的request

 

        这时使用 req.file取到上传的图片信息,req.body取到其他上传的数据。

        然后处理图片路径,图片路径根据自己项目的实际情况进行处理。最后执行sql语句,存入数据库。

        接口处理完毕。

        要想在浏览器中通过路径访问图片还需要在  app.js 这个文件中加入

app.use(express.static('image'))

        将整个image文件夹转为静态文件。

2,编写前端代码

        前端代码用element组件举个例子。使用element中上传的组件。其中有几个属性是比较重要的。

         action 是请求的URL,如果你写的接口需要上送token,需要配置headers,data是请求中除了图片文件其他的额外参数,name是上传图片文件的字段,这个字段必须和定义url时的那个字段保持一致,就是下面这个字段。

         之后再重新请求数据库中的数据,将图片显示在页面上。

上传之后

图片的保存位置

 

数据库中 

 这个路径可以直接在浏览器中访问

  

        可以到下面链接获取文章中的代码。

        链接: https://pan.baidu.com/s/1t7bX0Nv3kggyf7IFzEffcA 提取码: 0000

来源地址:https://blog.csdn.net/h360583690/article/details/131033991

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Node.js: express + MySQL + Vue实现图片上传

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

NodeJS实现图片上传代码(Express)

文件上传是每个网站不可避免的,最近需要做些上传图片的功能,主要解决两个问题,一个是文件上传样式和服务端路径保存,功能很简单,做起来倒是没那么简单,先从最简单的页面的上传页面的样式开始。 页面样式 Html页面默认的上传的是比较难看的,需要重
2022-06-04

简单实现node.js图片上传

本文实例为大家分享了node.js图片上传的具体代码,供大家参考,具体内容如下 1.node-formidable 对文件上传提供帮助的组件2.app.jsvar formidable = require('formidable'); va
2022-06-04

node.js实现多图片上传实例

先上效果图:这是我当时做多图片的代码,拿出来给大家借鉴一下(有些地方需要亲们自己改一下,大方向是对的) 总共涉及到三处文件(常规来说) 1.路由入口文件(我这里是/routes.js,很多时候会在/app.js)//添加美食 app.al
2022-06-04

Node.js+express怎么实现上传大文件

这篇“Node.js+express怎么实现上传大文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Node.js+expr
2023-06-17

node.js(express)中使用Jcrop进行图片剪切上传功能

需求说明 简单来说就是要实现用户上传头像,并且要保存用户裁切后的部分作为用户头像。 第一步,选择图片:第二步,在弹窗页面中展现并进行裁切:第三步,点击“保存”,上传服务器。 实现过程 说来有点坎坷,相当于做了2遍,走了弯路。 第1遍是用户一
2022-06-04

VUE如何实现上传图片功能

这篇“VUE如何实现上传图片功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“VUE如何实现上传图片功能”文章吧。首先要创建
2023-07-04

vue如何实现上传图片文件

这篇文章给大家分享的是有关vue如何实现上传图片文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。原始input标签form表单上传
2023-06-15

vue如何实现上传图片组件

这篇文章给大家分享的是有关vue如何实现上传图片组件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。未上传状态上传状态其他状态(查看/删除)自定义组件文件名称 - 这里叫UploadImg.vue
2023-06-25

Node.js和express怎么实现上传大文件

这篇“Node.js和express怎么实现上传大文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Node.js和expr
2023-07-04

node.js中怎么实现kindEditor图片上传功能

要在node.js中实现KindEditor的图片上传功能,可以使用以下步骤:安装express框架和multer模块:npm install express multer在项目中创建一个用于上传图片的路由文件(如upload.js),并在
node.js中怎么实现kindEditor图片上传功能
2024-03-02

编程热搜

目录