elementui實現(xiàn)圖片上傳和表單提交,使用axios的post方法前端

看一下重點內(nèi)容贬墩,然后再看代碼精肃,你就會很好理解了

第一步

upLoad圖片上傳組件中
:before-upload="beforeupload" 方法中return為false 來進行阻止action上傳地址,必填項上傳圖片

第二步創(chuàng)建一個變量

param:new FormData();//表單上傳的方法

第三步

把所需的表單參數(shù)和圖片地址參數(shù)追加到創(chuàng)建的表單方法中param
this.param.append('u_icon', file);//在beforeupload事件中
var form = this.form;
this.param.append('username', form.username);
this.param.append('user_id', form.user_id);

第四步

在axios中傳入param參數(shù)和config的參數(shù)就行了
let config = {
headers: {
'Content-Type': 'multipart/form-data'
}
};
axios.post(baseUrl+"/one/editmyprofile/",data,config)

代碼

<!--這個組件主要用來研究upload這個elementui的上傳插件組件-->

<template>
  <div id="upload">
    <label class="el-form-item__label" style="width: 80px;">
      頭像
    </label>
    <!--elementui的上傳圖片的upload組件-->
    <el-upload
      class="avatar-uploader"
      action=""
      :show-file-list="false"
      :before-upload="beforeupload">
      <img v-if="src" :src="src" class="avatar">
      <i v-else class="el-icon-plus avatar-uploader-icon"></i>
    </el-upload>
    <!--elementui的form組件-->
    <el-form ref="form" :model="form" label-width="80px">
        <el-form-item label="用戶名">
            <el-input v-model="form.username" name="names" style="width:360px;"></el-input>
        </el-form-item>
        <!-- <el-form-item label="手機號">
            <el-input v-model="form.phonenumber" name="names" style="width:360px;"></el-input>
        </el-form-item> -->
        <el-form-item label="郵箱">
            <el-input v-model="form.email" name="names" style="width:360px;"></el-input>
        </el-form-item>
        <el-form-item>
            <el-button type="primary" @click="onSubmit">保存</el-button>
        </el-form-item>
    </el-form>
  </div>
</template>

<script>
import url from '../../common/api'
    export default {
        data() {
            return {
              form: {//form里面的參數(shù)
                username: '',
                user_id : 10,
                // phonenumber:'',
                email:'',
              },
              param:new FormData(),//表單要提交的參數(shù)
              src:"", //展示圖片的地址
            };
        },
        methods: {
            //阻止upload的自己上傳潜慎,進行再操作
            beforeupload(file) {
                console.log(file);
                //創(chuàng)建臨時的路徑來展示圖片
                var windowURL = window.URL || window.webkitURL;
                this.src=windowURL.createObjectURL(file);
                this.param.append('u_icon', file);
                return false;
            },
            onSubmit(){//表單提交的事件
                var form = this.form;
                this.param.append('username', form.username);
                this.param.append('user_id', form.user_id);
                // this.param.append('phonenumber', form.phonenumber);
                this.param.append('email', form.email);
--------url引用中的設(shè)置
getData.UserInformation = (data)=>{ 
  let config = {
    headers: {
        'Content-Type': 'multipart/form-data'
    }
  };
  return http.post(baseUrl+"/one/editmyprofile/",data,config)
}
-------
              url.UserInformation(this.param).then(res=>{
                console.log(res,'------成功發(fā)送驗證碼')
              }).catch(err=>{
                console.log(err,'-------失敗發(fā)送驗證碼')
              })
            }
        }
    }
</script>
<style lang="stylus" scoped>
  >>>.avatar-uploader .el-upload {
    border: 1px dashed #d9d9d9;
    border-radius: 6px;
    cursor: pointer;
    position: relative;
    overflow: hidden;
  }
  >>>.avatar-uploader .el-upload:hover {
    border-color: #409EFF;
  }
  >>>.avatar-uploader-icon {
    font-size: 28px;
    color: #8c939d;
    width: 100px;
    height: 100px;
    line-height: 100px;
    text-align: center;
  }
  >>>.avatar {
    width: 100px;
    height: 100px;
    display: block;
  }
</style>

原理捡多,form表單的數(shù)據(jù)就是new FormData(),這樣就是算是form表單提交模擬了

后端代碼參考

通過上面的組件铐炫,在post中傳輸后垒手,后臺接受通過fomidable插件來處,這里用的是node倒信,把圖片和表單的數(shù)據(jù)保到數(shù)據(jù)庫和本地的靜態(tài)資源文件夾里面科贬,如下面:

//這個是后臺的routers文件夾下面的upload.js文件
 
var express = require('express');
var router = express.Router();
var handler = require('./dbhandler.js'); //封裝的mongodb的增刪改查和分頁基本操作的文件;
var ObjectId = require('mongodb').ObjectId; //對mongo的_id處理的插件鳖悠;
var formidable = require('formidable');
var fs = require("fs");
 
router.post("/",function(req,res,next){
    var form = new formidable.IncomingForm();
    //設(shè)置文件上傳存放地址
    //form.uploadDir = "./public/images";
    //執(zhí)行里面的回調(diào)函數(shù)的時候榜掌,表單已經(jīng)全部接收完畢了。
    form.parse(req, function(err, fields, files) {
        console.log("files:",files)  //這里能獲取到圖片的信息
        console.log("fields:",fields) //這里能獲取到傳的參數(shù)的信息乘综,如上面的message參數(shù)憎账,可以通過fields。message來得到
 
    })
})
 
module.exports = router;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瘾带,一起剝皮案震驚了整個濱河市鼠哥,隨后出現(xiàn)的幾起案子熟菲,更是在濱河造成了極大的恐慌看政,老刑警劉巖朴恳,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異允蚣,居然都是意外死亡于颖,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進店門嚷兔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來森渐,“玉大人,你說我怎么就攤上這事冒晰⊥拢” “怎么了?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵壶运,是天一觀的道長耐齐。 經(jīng)常有香客問我,道長蒋情,這世上最難降的妖魔是什么埠况? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮棵癣,結(jié)果婚禮上辕翰,老公的妹妹穿的比我還像新娘。我一直安慰自己狈谊,他們只是感情好喜命,可當(dāng)我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著河劝,像睡著了一般渊抄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丧裁,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天护桦,我揣著相機與錄音,去河邊找鬼煎娇。 笑死二庵,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缓呛。 我是一名探鬼主播催享,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哟绊!你這毒婦竟也來了因妙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎攀涵,沒想到半個月后铣耘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡以故,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年蜗细,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怒详。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡炉媒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出昆烁,到底是詐尸還是另有隱情吊骤,我是刑警寧澤,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布静尼,位于F島的核電站白粉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏茅郎。R本人自食惡果不足惜蜗元,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望系冗。 院中可真熱鬧奕扣,春花似錦、人聲如沸掌敬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奔害。三九已至楷兽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間华临,已是汗流浹背芯杀。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留雅潭,地道東北人揭厚。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像扶供,于是被迫代替她去往敵國和親筛圆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,566評論 2 349