Elementui+iView將圖片上傳到express服務器

前段代碼

Elementui代碼

<div id="elemenui_upload">
  <el-upload
    action="/localServer/users/upload"
    ref="upload"
    :auto-upload="false"
    multiple
    :limit="5"
    :on-success="successUp"
  >
    <el-button slot="trigger" size="small" type="primary">
        選擇圖片
    </el-button>
    <el-button size="small" type="success" @click="Onsubmit">
        上傳至服務器
    </el-button>
    <div slot="tip" class="el-upload__tip">
      jpg/png files with a size less than 500kb
    </div>
  </el-upload>
</div>

<el-upload>標簽中的action屬性設置為expres服務器路由的地址铆隘,ref設置為upload熟尉,on-success為文件上傳成功事件,觸發(fā)事件熙卡,執(zhí)行successUp函數(shù)

第二個<el-button>即為提交按鈕杖刷,點擊執(zhí)行Onsubmit函數(shù)

iView代碼

<div id="ivew_upload">
  <Upload action="/localServer/users/upload" :on-success="successUp">
    <Button icon="ios-cloud-upload-outline">上傳圖片</Button>
  </Upload>
</div>

iView的代碼比較簡潔,上傳圖片的按鈕點擊時再膳,會自動執(zhí)行submit挺勿,不用我們另外設置函數(shù)。

iView觸發(fā)on-success事件所執(zhí)行的函數(shù)與Elementui的一致

上述代碼的方法聲明

export default {
  methods: {
    Onsubmit() {
      this.$refs.upload.submit();
    },
    successUp(response, file, fileList) {
      console.log("通過127.0.0.1:7882\\" + response.file.path + "查看圖片");
    },
  },
};

this.$refs.upload.submit();表示找到ref為upload的組件喂柒,執(zhí)行submit函數(shù)不瓶,即可將圖片上傳至服務器

successUp函數(shù)有三個參數(shù),response為服務器返回的響應灾杰,file為當前的文件對象蚊丐,fileList為當前文件列表

demo3.png

上圖為response返回的數(shù)據(jù)。path表示圖片存在服務器的位置艳吠,originalname表示在上傳前圖片在主機的原始名字

后端代碼

const express = require('express');
const router = express.Router();
const multer = require("multer");
const fs = require('fs');
const path = require('path');
var upload = multer({
  storage: multer.diskStorage({
    //設置文件存儲位置
    destination: function (req, file, cb) {
      let date = new Date();
      let year = date.getFullYear();
      let month = (date.getMonth() + 1).toString().padStart(2, '0');
      let day = date.getDate().toString().padStart(2, '0');
      let dir = "./uploads/" + year + month + day;

      //判斷目錄是否存在麦备,沒有則創(chuàng)建
      if (!fs.existsSync(dir)) {
        fs.mkdirSync(dir, {
          recursive: true
        });
      }

      //dir就是上傳服務器成功的圖片的存放的目錄
      cb(null, dir);
    },
    //設置文件名稱
    filename: function (req, file, cb) {
      let fileName = Date.now() + path.extname(file.originalname);
      //fileName就是上傳文件的文件名
      cb(null, fileName);
    }
  })
});
router.post('/upload', upload.single('file'), (req, res) => {
  console.log(req.file);
  res.json({
    file: req.file
  })
})
module.exports = router;

需要使用到multer模塊,沒有的需要自行下載npm install multer -s

圖片上傳至服務器成功昭娩,會在src目錄下創(chuàng)建一個文件夾uploads凛篙,該文件夾下面還會創(chuàng)建子文件夾,名稱為圖片上傳成功時的年月日

res.jsonres.send的作用基本一致栏渺,只是res.json返回的格式為json

注意

后端設置文件名稱時呛梆,最好不要用其他字符,以免通過靜態(tài)訪問失斂恼铩填物;

后端設置路由時也不要設置其他字符纹腌,_下劃線也不要設置;

前端配置代理時vue.config.js滞磺,自定義的代理名稱也最好不要帶有其他字符升薯,盡量使用駝峰命名法。

通過express靜態(tài)訪問圖片

在app.js文件中寫入app.use('/uploads', express.static('uploads'))击困,即可在瀏覽器中通過訪問127.0.0.1:express的端口/uploads/圖片上傳年月日/圖片名稱涎劈,查看圖片

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市沛励,隨后出現(xiàn)的幾起案子责语,更是在濱河造成了極大的恐慌,老刑警劉巖目派,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坤候,死亡現(xiàn)場離奇詭異,居然都是意外死亡企蹭,警方通過查閱死者的電腦和手機白筹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谅摄,“玉大人徒河,你說我怎么就攤上這事∷湍” “怎么了顽照?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長闽寡。 經(jīng)常有香客問我代兵,道長,這世上最難降的妖魔是什么爷狈? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任植影,我火速辦了婚禮,結果婚禮上涎永,老公的妹妹穿的比我還像新娘思币。我一直安慰自己,他們只是感情好羡微,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布谷饿。 她就那樣靜靜地躺著,像睡著了一般妈倔。 火紅的嫁衣襯著肌膚如雪博投。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天启涯,我揣著相機與錄音贬堵,去河邊找鬼。 笑死结洼,一個胖子當著我的面吹牛黎做,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播松忍,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼蒸殿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鸣峭?” 一聲冷哼從身側(cè)響起宏所,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎摊溶,沒想到半個月后爬骤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡莫换,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年霞玄,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拉岁。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡坷剧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出喊暖,到底是詐尸還是另有隱情惫企,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布陵叽,位于F島的核電站狞尔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏咨跌。R本人自食惡果不足惜沪么,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锌半。 院中可真熱鬧禽车,春花似錦、人聲如沸刊殉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽记焊。三九已至逸月,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間遍膜,已是汗流浹背碗硬。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工瓤湘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人恩尾。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓弛说,卻偏偏與公主長得像,于是被迫代替她去往敵國和親翰意。 傳聞我的和親對象是個殘疾皇子木人,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

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