最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

node+vue實現(xiàn)用戶注冊和頭像上傳的實例代碼

 更新時間:2017年07月20日 14:23:59   作者:HellowWorldZz  
本篇文章主要介紹了node+vue實現(xiàn)用戶注冊和頭像上傳的實例代碼,具有一定的參考價值,有興趣的可以了解一下

最近正好空閑,寫了個實用注冊代碼,分享給大家,有需要的朋友可以了解一下

數(shù)據(jù)庫我使用的是MongoDB。

首先做文件上傳,要保證協(xié)議里面的'Content-Type'為'multipart/form-data'。

注冊的步驟:

  1. 將用戶名密碼,圖片等提交給node端
  2. node端將圖片保存到服務(wù)器,圖片路徑及注冊用戶的個人信息保存到mongodb數(shù)據(jù)庫。

項目目錄如下,注冊功能只是其中的第一步:

前端框架使用的是vue.js,ajax使用的是vue的組件vue-resource。

前端上傳代碼如下:

<template>
 <div class="signUp">
  <!--<form id="signForm" enctype="multipart/form-data">-->
   <div>
    <label for="username">用戶名</label>
    <input type="text" name="username" id="username" placeholder="用戶名" v-model="users.username">
    <div v-if="judgeUser">請輸入合適的用戶名</div>
   </div>
   <div>
    <label for="password">密碼</label>
    <input type="text" name="password" id="password" placeholder="密碼" v-model="users.password">
    <div v-if="judgePas">請輸入符合規(guī)范的密碼</div>
   </div>
   <div>
    <label for="usernameReply">重復(fù)密碼</label>
    <input type="text" name="usernameReply" id="usernameReply" placeholder="重復(fù)密碼" v-model="users.passwords">
    <div v-if="judgePass">兩次輸入請保持一致</div>
   </div>
  <div>
   <label for="name">昵稱</label>
   <input type="text" name="name" id="name" placeholder="昵稱" v-model="users.name">
   <div v-if="judgeName">請輸入昵稱</div>
  </div>
   <div>
    <label for="sex">性別</label>
    <select name="" id="sex" v-model="users.sex">
     <option value="男">男</option>
     <option value="女">女</option>
    </select>
   </div>
   <div>
    <label for="photo">頭像</label>
    <input type="file" name="photo" id="photo" @change="onfilechange"> //通過change事件獲取到用戶所要上傳的圖片
   </div>
   <div>
    <label for="Pintroduction">個人介紹</label>
    <textarea name="Pintroduction" id="Pintroduction" cols="60" rows="8" v-model="users.Pintroduction"></textarea>
   </div>

   <input type="submit" value="注冊" class="submit" @click="submit()">
  <!--</form>-->
 </div>
</template>

<script>
//首先現(xiàn)在組件中引入vue和vue-resourece   
import Vue from 'vue';
import vueRes from 'vue-resource';
//將vue-resourece注冊到全局  
Vue.use(vueRes);

export default{
  name:'signUp',
  data(){
    return{
       judgeUser:false,
       judgePas:false,
       judgePass:false,
       judgeName:false,
       users:{
        username:null,
        password:null,
        passwords:null,
        sex:null,
        Pintroduction:null,
        photo:null,
       }
    }
  },
 methods: {
  submit: function () {
   var formdata = new FormData();
   for (var key in this.users) {  //讀取data中所要上傳的內(nèi)容循環(huán)append到fordata中
    if (key) {
     formdata.append(key, this.users[key])
    }
   }

   this.$http.post('/signup', formdata,{ //通過調(diào)取node端定義的接口,切記一定要將請求頭中的Content-Type改為multipart/form-data否則node端獲取到的將是一個字符串
     headers:{
       'Content-Type':'multipart/form-data'
     }
   })
    .then()
  },
  onfilechange: function (e) { //獲取到圖片文件
    var files = e.target.files ||     e.dataTransfer.files;
   if (!files.length)return;
   this.users.photo = files[0];
  }
 }

}
</script>

node端接收代碼如下:

var express=require('express');
var router = express.Router();
var formidable=require('formidable');//上傳功能的插件
var path=require('path');
var fs=require('fs');
var user=require('../models/users');//注冊信息插入數(shù)據(jù)庫的方法

router.post('/',function (req,res) {
 var uploadDir='./public/images/';
 var form=new formidable.IncomingForm();
 //文件的編碼格式
 form.encoding='utf-8';
 //文件的上傳路徑
 form.uploadDir=uploadDir;
 //文件的后綴名
 form.extensions=true;
 //文件的大小限制
 form.maxFieldsSize = 2 * 1024 * 1024;
 form.parse(req, function (err, fields, files) {
 //fields上傳的string類型的信息
 //files為上傳的文件
   var username=fields.username;
   var password=fields.password;
   var passwords=fields.passwords;
   var sex=fields.sex;
   var pintroduction=fields.Pintroduction;
   var name=fields.name;

   var file=files.photo;

   var oldpath =path.normalize(file.path);//返回正確格式的路徑

   var newfilename=username+file.name;
   var newpath=uploadDir+newfilename;

   //寫入數(shù)據(jù)庫的信息
  var useres={
   username:username,
   password:password,
   sex:sex,
   pintroduction:pintroduction,
   name:name,
  };

  //將老的圖片路徑改為新的圖片路徑
  fs.rename(oldpath,newpath,function(err){
   if(err){
    console.error("改名失敗"+err);
   }
   else {
    useres.filePath=newpath;
     user.create(useres);
     res.send('注冊成功')
   }
  });
 })
});

module.exports = router;

// models/users.js

var User=require('../lib/mongo');
module.exports={

 create:function (useres) {
  User.create(useres);
 }
};

// lib/mongo.js
const moogoose=require('mongoose');


moogoose.connect('mongodb://localhost/myblog');

moogoose.Promise = global.Promise;

const db=moogoose.connection;


// exports.db=db;
// db.once('open',function () {
//
// });

var userSchema=new moogoose.Schema({
  username:{type:'string',unique:true},
  password:{type:'string'},
  sex:{type:'string'},
  pintroduction:{type:'string'},
  name:{type:'string'},
  filePath:{type:'string'}
 },
 {collection:'user'}
);

var user=moogoose.model('user',userSchema);

exports.create=function (useres) {
 new user(useres).save(function (err,data) {
 })
};

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • nodejs處理tcp連接的核心流程

    nodejs處理tcp連接的核心流程

    這篇文章主要介紹了nodejs處理tcp連接的核心流程,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • node的process以及child_process模塊學(xué)習(xí)筆記

    node的process以及child_process模塊學(xué)習(xí)筆記

    這篇文章主要介紹了node的process以及child_process模塊學(xué)習(xí)筆記,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Node.js使用sharp庫實現(xiàn)PNG圖片轉(zhuǎn)換為WebP格式

    Node.js使用sharp庫實現(xiàn)PNG圖片轉(zhuǎn)換為WebP格式

    在 Node.js 中,可以使用 sharp 庫將 PNG 圖片轉(zhuǎn)換為 WebP 格式,sharp 是一個高性能的圖像處理庫,支持多種圖像格式的轉(zhuǎn)換和處理,以下是如何使用 sharp 將 PNG 圖片轉(zhuǎn)換為 WebP 的詳細(xì)步驟,需要的朋友可以參考下
    2024-12-12
  • 關(guān)于訪問node?express中的static靜態(tài)文件方法

    關(guān)于訪問node?express中的static靜態(tài)文件方法

    這篇文章主要介紹了關(guān)于訪問node?express中的static靜態(tài)文件方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Node.js中的Buffer對象及創(chuàng)建方式

    Node.js中的Buffer對象及創(chuàng)建方式

    node.js提供了一個Buffer對象來提供對二進(jìn)制數(shù)據(jù)的操作,Buffer?類的實例類似于整數(shù)數(shù)組,但?Buffer?的大小是固定的、且在?V8?堆外分配物理內(nèi)存。本文給大家介紹Node.js中的Buffer對象及創(chuàng)建方式,感興趣的朋友一起看看吧
    2022-01-01
  • nodejs微信開發(fā)之接入指南

    nodejs微信開發(fā)之接入指南

    這篇文章主要介紹了nodejs微信開發(fā)之接入指南,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • 解決node.js含有%百分號時發(fā)送get請求時瀏覽器地址自動編碼的問題

    解決node.js含有%百分號時發(fā)送get請求時瀏覽器地址自動編碼的問題

    這篇文章主要介紹了解決node.js含有%百分號時發(fā)送get請求時瀏覽器地址自動編碼的問題,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • 在Node.js中實現(xiàn)后端與前端的交互的方法詳解

    在Node.js中實現(xiàn)后端與前端的交互的方法詳解

    在前后端不分離的應(yīng)用模式中,前端頁面看到的效果都是由后端控制,由后端渲染頁面或重定向,也就是后端需要控制前端的展示,前端與后端的耦合度很高, 所以本文給大家介紹了在Node.js中實現(xiàn)后端與前端的交互的方法,需要的朋友可以參考下
    2024-09-09
  • 在Express中提供靜態(tài)文件的實現(xiàn)方法

    在Express中提供靜態(tài)文件的實現(xiàn)方法

    這篇文章主要介紹了在Express中提供靜態(tài)文件的實現(xiàn)方法,將包含靜態(tài)資源的目錄的名稱傳遞給 express.static 中間件函數(shù),以便開始直接提供這些文件,感興趣的可以了解一下
    2019-10-10
  • 初識Node.js

    初識Node.js

    本文主要是簡單講訴了Node.js的介紹,安裝,希望對剛剛接觸Node.js的同學(xué)能有所幫助,有什么問題可以給我留言,一起學(xué)習(xí)進(jìn)步
    2014-09-09

最新評論

武威市| 大洼县| 大连市| 淳化县| 布尔津县| 宜黄县| 紫金县| 潼关县| 南华县| 昌江| 民乐县| 田阳县| 扎鲁特旗| 尼勒克县| 高雄市| 肇东市| 亳州市| 浮梁县| 龙岩市| 江都市| 铁岭县| 瓮安县| 嘉祥县| 台东县| 镇远县| 乐平市| 榆林市| 莱芜市| 股票| 贵阳市| 集贤县| 营山县| 宁阳县| 中西区| 青冈县| 永福县| 忻州市| 洛阳市| 博乐市| 盐山县| 南充市|