node+vue用戶頭像處理上傳并保存

2017年7月14日19:21:29 ,最近做個網(wǎng)站筋量,需要有用戶頭像裁剪上傳功能烹吵,具體流程是用戶在本地選擇圖片,前端將圖片裁剪好發(fā)給后端桨武,后端接收到圖片將它保存起來肋拔,并將信息存入數(shù)據(jù)庫。

先說一下環(huán)境后端是express呀酸,前端是vue-cli2.0 做的單文件網(wǎng)站凉蜂。

模塊選用:前端用 vue-image-crop-upload^1.3.14 后端用multer^1.3.0",數(shù)據(jù)庫mysql,在這里不是重點省去性誉。

首先請安裝這兩個模塊窿吩,然后上代碼了:

前端代碼:
<pre><code>
<template>
<div id="imgUp">
<my-upload field="avatar" /field是后端接收文件用的name/
v-model="show"
@crop-success="cropSuccess" /一些鉤子函數(shù)/
@crop-upload-success="cropUploadSuccess"
@crop-upload-fail="cropUploadFail"
:width="200" /最終裁剪出來的圖片的大小/
:height="200"
url="/api/profile"/后端服務(wù)地址/
img-format="png"></my-upload>


</div>
</template>

<script>
import myUpload from 'vue-image-crop-upload/upload-2.vue';
export default {
name: 'imgUp',
data(){
return{
show: false,
imgDataUrl: ''
}
},
components: {
'my-upload': myUpload
},
methods: {
toggleShow() {
this.show = !this.show;
},
cropSuccess(imgDataUrl, field){
this.imgDataUrl = imgDataUrl;
},
cropUploadSuccess(jsonData, field){
},
cropUploadFail(status, field){
}
}
}
</script>

<style lang="less">
</style>
</pre></code>

后端代碼:

<pre><code>
var apiRouter = express.Router();
//4. 圖片上傳
var multer = require('multer')
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './uploads') /上傳文件放入的路徑,這個根路徑是項目的根路徑错览。/
},
filename: function (req, file, cb) {
var fileFormat = (file.originalname).split(".");
cb(null, file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1]);
}
});
var upload = multer({
storage: storage
});
/upload.single('avatar')纫雁, avatar是圖片的name/
apiRouter.post('/profile', upload.single('avatar'), function (req, res, next) {
if (req.file) {
res.send({res:"圖片上傳成功"})
}
});
app.use('/api', apiRouter);
</code></pre>

到此完成,這兩個模塊完美的融合在一起倾哺,不需要修改代碼轧邪。Multer模塊說只支持用于處理 multipart/form-data 類型的表單數(shù)據(jù),所以在找前端模塊的時候有點擔(dān)心,然后查看了vue-image-crop-upload的代碼羞海,發(fā)現(xiàn)作者用的是formDate打包的文件,然后用XMLHttpRequest上傳的忌愚,這樣處理兩個模塊就兼容了,無需擔(dān)心扣猫。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末菜循,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌癌幕,老刑警劉巖衙耕,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異勺远,居然都是意外死亡橙喘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門胶逢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來厅瞎,“玉大人,你說我怎么就攤上這事初坠『汪ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵碟刺,是天一觀的道長锁保。 經(jīng)常有香客問我,道長半沽,這世上最難降的妖魔是什么爽柒? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮者填,結(jié)果婚禮上浩村,老公的妹妹穿的比我還像新娘。我一直安慰自己占哟,他們只是感情好心墅,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著重挑,像睡著了一般嗓化。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谬哀,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天刺覆,我揣著相機(jī)與錄音,去河邊找鬼史煎。 笑死谦屑,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的篇梭。 我是一名探鬼主播氢橙,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼恬偷!你這毒婦竟也來了悍手?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坦康,沒想到半個月后竣付,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡滞欠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年古胆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筛璧。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡逸绎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出夭谤,到底是詐尸還是另有隱情棺牧,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布朗儒,位于F島的核電站陨帆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏采蚀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一承二、第九天 我趴在偏房一處隱蔽的房頂上張望榆鼠。 院中可真熱鬧,春花似錦亥鸠、人聲如沸妆够。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽神妹。三九已至,卻和暖如春家妆,著一層夾襖步出監(jiān)牢的瞬間鸵荠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工伤极, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留蛹找,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓哨坪,卻偏偏與公主長得像庸疾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子当编,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容