首页 web前端 js教程 node简单实现更改头像功能代码分享

node简单实现更改头像功能代码分享

Dec 29, 2017 pm 02:16 PM
node 头像 更改

更换头像的功能我们再熟悉不过了,本文主要介绍了node简单实现一个更改头像功能的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。

思路

首先,当用户点击上传头像,更新头像的时候,将头像上传到项目的一个文件夹里面(我是存放在项目的public/images/img里面),并且将图像名重命名(可以以时间戳来命名)。

同时图片在项目的路径插入到用户表的当前用户的 userpicturepath 里面

然后更新用户的 session,将图片里面的路径赋值给 session 的里面的picture属性里面

的 src 获取到当前用户的session里面的 picture 的值,最后动态刷新页面头像就换成了用户上传的头像了

实现效果

代码

ejs部分


<img class="nav-user-photo" src="<%= user.picture.replace(/public(\/.*)/, "$1") %>" alt="Photo" style="height: 40px;"/>
<form enctype="multipart/form-data" method="post" name="fileInfo">
  <input type="file" accept="image/png,image/jpg" id="picUpload" name="file">
</form>
<button type="button" class="btn btn-primary" id="modifyPicV">确定</button>
登录后复制

js部分


document.querySelector(&#39;#modifyPicV&#39;).addEventListener(&#39;click&#39;, function () {
  let formData = new FormData();
  formData.append("file",$("input[name=&#39;file&#39;]")[0].files[0]);//把文件对象插到formData对象上
  console.log(formData.get(&#39;file&#39;));
  $.ajax({
    url:&#39;/modifyPic&#39;,
    type:&#39;post&#39;,
    data: formData,
    processData: false, // 不处理数据
    contentType: false,  // 不设置内容类型
    success:function () {
      alert(&#39;success&#39;);
      location.reload();
    },
  })
});
登录后复制

路由部分,使用formidable,这是一个Node.js模块,用于解析表单数据,尤其是文件上传


let express = require(&#39;express&#39;);
let router = express.Router();
let fs = require(&#39;fs&#39;);
let {User} = require(&#39;../data/db&#39;);
let formidable = require(&#39;formidable&#39;);
let cacheFolder = &#39;public/images/&#39;;//放置路径
router.post(&#39;/modifyPic&#39;, function (req, res, next) {
  let userDirPath = cacheFolder + "Img";
  if (!fs.existsSync(userDirPath)) {
    fs.mkdirSync(userDirPath);//创建目录
  }
  let form = new formidable.IncomingForm(); //创建上传表单
  form.encoding = &#39;utf-8&#39;; //设置编码
  form.uploadDir = userDirPath; //设置上传目录
  form.keepExtensions = true; //保留后缀
  form.maxFieldsSize = 2 * 1024 * 1024; //文件大小
  form.type = true;
  form.parse(req, function (err, fields, files) {
    if (err) {
      return res.json(err);
    }
    let extName = &#39;&#39;; //后缀名
    switch (files.file.type) {
      case &#39;image/pjpeg&#39;:
        extName = &#39;jpg&#39;;
        break;
      case &#39;image/jpeg&#39;:
        extName = &#39;jpg&#39;;
        break;
      case &#39;image/png&#39;:
        extName = &#39;png&#39;;
        break;
      case &#39;image/x-png&#39;:
        extName = &#39;png&#39;;
        break;
    }
    if (extName.length === 0) {
      return res.json({
        msg: &#39;只支持png和jpg格式图片&#39;
      });
    } else {
      let avatarName = &#39;/&#39; + Date.now() + &#39;.&#39; + extName;
      let newPath = form.uploadDir + avatarName;
      fs.renameSync(files.file.path, newPath); //重命名
      console.log(newPath)
      //更新表
      User.update({
        picture: newPath
      }, {
        where: {
          username: req.session.user.username
        }
      }).then(function (data) {
        if (data[0] !== undefined) {
          User.findAll({
            where: {
              username: req.session.user.username
            }
          }).then(function (data) {
            if (data[0] !== undefined) {
              req.session.user.picture = data[0].dataValues.picture;
              res.send(true);
            } else {
              res.send(false);
            }
          })
        }
      }).catch(function (err) {
        console.log(err);
      });
    }
  });
});
登录后复制

相关头像:

关于js拖拽上传 [一个拖拽上传修改头像的流程]

thinkphp批改头像

关于js拖拽上传 [一个拖拽上传修改头像的流程]_javascript技巧

以上是node简单实现更改头像功能代码分享的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

怎么更改wallpaper engine的储存位置?wallpaper engine设置保存路径方法 怎么更改wallpaper engine的储存位置?wallpaper engine设置保存路径方法 Mar 13, 2024 pm 12:40 PM

  很多用户都喜欢在wallpaperengine上下载各种的壁纸、视频,时间久了,就会发现下载的壁纸越来越多,导致硬盘空间不够用了,这时候可以更改wallpaperengine的储存位置来减少空间占用。那么下面就来看看wallpaperengine更改保存路径的方法吧。  第一步:点击左上角steam下的设置打开如下界面。  第二步:点击下载找到内容库下面的“Steam库文件夹”,在上面单击打开。  第三步:点击添加库文件夹,选择你想要的更改到的路径,添加好之后在默认那一栏右键,

在 Windows 11 上更改用户文件夹名称的 4 个步骤 在 Windows 11 上更改用户文件夹名称的 4 个步骤 Jul 07, 2023 pm 02:33 PM

用户文件夹名称和帐户名称是在设置用户帐户期间设置的。但是,有时出于某种原因,您需要在Windows11上更改您的用户文件夹名称。与重命名标准文件夹不同,此过程并不那么简单。但是有了正确的信息,这个过程可以毫不费力,这就是我们在本指南中为您提供的内容。重命名我的用户文件夹名称是否安全?如前所述,在Windows11上更改用户文件夹名称并不像重命名普通文件夹那样简单。即使您更改了用户帐户名称,用户文件夹名称仍将保持不变。Microsoft建议不要更改您的用户文件夹名称,因为这可能会导致某些应用程序无

如何修改win7桌面图标的字体颜色 如何修改win7桌面图标的字体颜色 Jan 02, 2024 pm 11:17 PM

win7默认的桌面图标字体一般是白色的,我们如果使用了白色的桌面背景的话,可能会看不见桌面图标文字,这时候就可以在个性化设置中通过高级外观设置自定义桌面字体颜色,下面就一起来看一下吧。win7桌面图标字体颜色更改教程1、右键桌面空白处,打开“个性化”设置。2、在主题下我们可以直接选择想要的主题就可以更改桌面图标字体颜色了。3、如果不满意这些主题,还可以打开“窗口颜色”如图所示。4、点击下方的“高级外观设置”5、将图示位置的“项目”更改为“桌面”6、然后在红框位置就可以更改字体颜色、大小等各种属性

调整 Windows 11 中记事本字体、样式和大小的方法 调整 Windows 11 中记事本字体、样式和大小的方法 Sep 23, 2023 pm 11:25 PM

许多用户希望在Windows11上的记事本中更改字体,因为默认字体对他们来说太小或难以阅读。更改字体非常简单快捷,在本指南中,我们将向您展示如何自定义记事本并根据需要更改字体。Windows11记事本默认使用什么字体?至于默认字体选项,记事本使用Consolas字体,默认字体大小设置为11像素。如何在Windows11中更改记事本字体大小和样式?使用记事本中的“编辑”菜单单击搜索按钮并键入记事本。从结果列表中选择记事本。在记事本中,单击“编辑”菜单,然后选择“字体”。现在,您应该在左窗格中看到设

恢复win11默认头像的教程 恢复win11默认头像的教程 Jan 02, 2024 pm 12:43 PM

如果我们更换了自己的系统账户头像,但是不想要了,结果找不到win11怎么更改默认头像了,其实我们只要找到默认头像的文件夹就可以恢复了。win11头像恢复默认1、首先点开底部任务栏的“Windows徽标”2、接着在其中找到并打开“设置”3、然后进入左边栏的“账户”4、随后点开右侧的“账户信息”5、打开后,点击选择照片中的“浏览文件”6、最后进入“C:\ProgramData\Microsoft\UserAccountPictures”路径就可以找到系统默认头像图片了。

用Eclipse更改背景颜色的逐步指南 用Eclipse更改背景颜色的逐步指南 Jan 28, 2024 am 08:28 AM

一步步教你在Eclipse中更改背景颜色,需要具体代码示例Eclipse是一款非常流行的集成开发环境(IDE),经常被用来编写和调试Java项目。在默认情况下,Eclipse的背景颜色是白色,但是有些用户可能希望更改背景颜色以适应自己的喜好或减轻眼部疲劳。本文将一步步教你如何在Eclipse中更改背景颜色,并提供具体的代码示例。步骤1:打开Eclipse首先

xbox商店更改地区设置方法 xbox商店更改地区设置方法 Dec 24, 2023 pm 08:53 PM

当要买的游戏出现没有的情况,可以通过更改地区来购买,各位玩家知道xbox商店更改地区设置吗?那么我们一起看看xbox商店更改地区设置的介绍吧!xbox商店地区设置:1、打开windows设置——选择时间和语言。2、选择区域——默认应是中国——选择其他国家和地区。3、选择其他国家和地区——进入商店——商店提示你刷新内容即可。

教你如何修改win7的启动顺序 教你如何修改win7的启动顺序 Jan 04, 2024 pm 09:06 PM

合理的设置win7开机启动顺序可以让我们的电脑开机速度更快,但是很多朋友都不知道应该如何更改启动顺序,其实我们可以在注册表编辑器中进行更改,下面就跟着小编一起来看一下具体的方法吧。win7启动顺序更改教程1、在左下角搜索“运行”。2、打开“运行”程序。3、输入“regedit”回车确定。4、找到如下路径“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder”右键修改图示“list”文件。5、图示位置从上到下就是

See all articles