成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

node簡單實(shí)現(xiàn)一個(gè)更改頭像功能的示例

前言

成都創(chuàng)新互聯(lián)公司長期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為克拉瑪依企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè),克拉瑪依網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

一直想寫這篇文章,無奈由于要考試的原因,一直在復(fù)習(xí),拖延到現(xiàn)在才寫🤣,之前用 node 的 express 框架寫了個(gè)小項(xiàng)目,里面有個(gè)上傳圖片的功能,這里記錄一下如何實(shí)現(xiàn)(我使用的是 ejs)📝

思路

首先,當(dāng)用戶點(diǎn)擊上傳頭像,更新頭像的時(shí)候,將頭像上傳到項(xiàng)目的一個(gè)文件夾里面(我是存放在項(xiàng)目的public/images/img里面),并且將圖像名重命名(可以以時(shí)間戳來命名)。

node簡單實(shí)現(xiàn)一個(gè)更改頭像功能的示例

同時(shí)圖片在項(xiàng)目的路徑插入到用戶表的當(dāng)前用戶的 userpicturepath 里面

然后更新用戶的 session,將圖片里面的路徑賦值給 session 的里面的picture屬性里面

<img> 的 src 獲取到當(dāng)前用戶的session里面的 picture 的值,最后動(dòng)態(tài)刷新頁面頭像就換成了用戶上傳的頭像了

實(shí)現(xiàn)效果

node簡單實(shí)現(xiàn)一個(gè)更改頭像功能的示例

代碼

ejs部分

<img class="nav-user-photo" src="<%= user.picture.replace(/public(\/.*)/, "$1") %>" alt="Photo" />
<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('#modifyPicV').addEventListener('click', function () {
  let formData = new FormData();
  formData.append("file",$("input[name='file']")[0].files[0]);//把文件對象插到formData對象上
  console.log(formData.get('file'));
  $.ajax({
    url:'/modifyPic',
    type:'post',
    data: formData,
    processData: false, // 不處理數(shù)據(jù)
    contentType: false,  // 不設(shè)置內(nèi)容類型
    success:function () {
      alert('success');
      location.reload();
    },
  })
});

路由部分,使用formidable,這是一個(gè)Node.js模塊,用于解析表單數(shù)據(jù),尤其是文件上傳

let express = require('express');
let router = express.Router();
let fs = require('fs');
let {User} = require('../data/db');
let formidable = require('formidable');
let cacheFolder = 'public/images/';//放置路徑
router.post('/modifyPic', function (req, res, next) {
  let userDirPath = cacheFolder + "Img";
  if (!fs.existsSync(userDirPath)) {
    fs.mkdirSync(userDirPath);//創(chuàng)建目錄
  }
  let form = new formidable.IncomingForm(); //創(chuàng)建上傳表單
  form.encoding = 'utf-8'; //設(shè)置編碼
  form.uploadDir = userDirPath; //設(shè)置上傳目錄
  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 = ''; //后綴名
    switch (files.file.type) {
      case 'image/pjpeg':
        extName = 'jpg';
        break;
      case 'image/jpeg':
        extName = 'jpg';
        break;
      case 'image/png':
        extName = 'png';
        break;
      case 'image/x-png':
        extName = 'png';
        break;
    }
    if (extName.length === 0) {
      return res.json({
        msg: '只支持png和jpg格式圖片'
      });
    } else {
      let avatarName = '/' + Date.now() + '.' + 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);
      });
    }
  });
});

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

新聞標(biāo)題:node簡單實(shí)現(xiàn)一個(gè)更改頭像功能的示例
本文來源:http://jinyejixie.com/article8/psiiop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、Google、網(wǎng)站導(dǎo)航、全網(wǎng)營銷推廣、響應(yīng)式網(wǎng)站自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
东丰县| 昌乐县| 思茅市| 普洱| 太和县| 会昌县| 漳州市| 根河市| 葫芦岛市| 宁阳县| 林甸县| 盘山县| 裕民县| 郑州市| 精河县| 安溪县| 赫章县| 达拉特旗| 休宁县| 成都市| 沁源县| 兴山县| 昌宁县| 都安| 孝昌县| 黔江区| 山丹县| 玛多县| 张掖市| 华宁县| 龙陵县| 广宁县| 梧州市| 灵山县| 金华市| 东辽县| 庆城县| 灵川县| 双城市| 巨鹿县| 同德县|