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

element-ui配合node實(shí)現(xiàn)自定義上傳文件方式

 更新時(shí)間:2022年09月07日 08:57:20   作者:機(jī)智的趙先生  
這篇文章主要介紹了element-ui配合node實(shí)現(xiàn)自定義上傳文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

element-ui配合node實(shí)現(xiàn)自定義上傳文件

某些情況下,使用element-ui的upload組件默認(rèn)上傳無(wú)法滿足我們的需求,so~今天主要介紹如何使用element-ui實(shí)現(xiàn)自定義上傳,以及后端如何接收上傳的文件信息和其他信息,根據(jù)element-ui文檔,http-request可以自定義上傳方法,會(huì)覆蓋掉默認(rèn)的上傳。

首先我們來(lái)看前端代碼:

<template>
? <div style="margin-top:100px">
? ? <el-form :model="form">
? ? ? <el-form-item label="姓名" label-width="50px">
? ? ? ? <el-input v-model="form.name"></el-input>
? ? ? </el-form-item>
? ? ? <el-form-item label="年齡" label-width="50px">
? ? ? ? <el-input v-model="form.age"></el-input>
? ? ? </el-form-item>
? ? ? <el-form-item label="文件" label-width="50px">
? ? ? ? <el-upload?
? ? ? ? ? class="upload-demo"?
? ? ? ? ? :auto-upload="false"?
? ? ? ? ? :limit="1"?
? ? ? ? ? ref="upload"
? ? ? ? ? :http-request="upload"
? ? ? ? ? multiple>
? ? ? ? ? <!-- :http-request="upload" -->
? ? ? ? ? <el-button size="small" type="primary">點(diǎn)擊上傳</el-button>
? ? ? ? ? <div slot="tip" class="el-upload__tip">只能上傳pdf文件</div>
? ? ? ? </el-upload>
? ? ? </el-form-item>
? ? </el-form>
? ??
? ? <el-button type="primary" @click="upload">確定</el-button>
? </div>
</template>
<script>
? export default{
? ? name: 'upload',
? ? data() {
? ? ? return {
? ? ? ? form: {
? ? ? ? ? name: '',
? ? ? ? ? age: ''
? ? ? ? }
? ? ? }
? ? },
? ? methods: {
? ? ? upload() {
? ? ? ? const formData = new FormData();
? ? ? ? const file = this.$refs.upload.uploadFiles[0];
? ? ? ? const headerConfig = { headers: { 'Content-Type': 'multipart/form-data' } };
? ? ? ? if (!file) { // 若未選擇文件
? ? ? ? ? alert('請(qǐng)選擇文件');
? ? ? ? ? return;
? ? ? ? }
? ? ? ? formData.append('file', file.raw);
? ? ? ? formData.append('name', this.name);
? ? ? ? formData.append('age', this.age);
? ? ? ? this.$http.post('/api/upload', formData, headerConfig).then(res => {
? ? ? ? ? console.log(res);
? ? ? ? })
? ? ? }
? ? }
? }
</script>

由于是上傳文件,所以我們需要配置下axios請(qǐng)求header的Content-Type為'multipart/form-data',this.$refs.upload.uploadFiles[0].raw即為我們選擇的文件,name和age則為其他要傳的信息。

接著,我們來(lái)看后端如何獲取,這里以node為例:

我們需要安裝multer中間件,npm install multer -S即可,接下來(lái)我們來(lái)看如何使用multer。

首先引入multer:

var express = require('express');
var multer = require('multer')
const upload = multer({ dest: 'uploads/' });
?
var app = express();
app.use(upload.single('file')); //
?
app.post('/api/upload', (req, res)=>{
? console.log(req.body);//獲取到的age和name
? console.log(req.file);//獲取到的文件
? ? //做些其他事情
})

整個(gè)過(guò)程下來(lái),就完成了圖片的上傳,非常簡(jiǎn)單。

關(guān)于multer的用法:https://www.npmjs.com/package/multer

自定義elementui上傳文件及攜帶參數(shù)

elementui提供了上傳文件的ui,可以比較方便,我們需要它來(lái)完成自定義上傳文件以及攜帶參數(shù)需要改寫其中的一些方法來(lái)實(shí)現(xiàn)。

下面是一個(gè)簡(jiǎn)單的上傳標(biāo)簽

? ? <el-upload
? ? ? ? ref="upload"
? ? ? ? style="display: inline"
? ? ? ? drag
? ? ? ? action=""
? ? ? ? :before-upload="beforeUploadHandle"
? ? ? ? :http-request="handleUploadForm"
? ? ? ? :auto-upload="false"
? ? ? ? multiple
? ? ? ? :limit="1"
? ? ? ? :on-exceed="handleExceed">
? ? ? <el-link icon="el-icon-paperclip" type="primary">添加需要上傳的文件</el-link>
? ? </el-upload>

不自動(dòng)上傳

:auto-upload=“false”

限制上傳文件個(gè)數(shù)

:limit=“1”

上傳之前的校驗(yàn)

我們需要實(shí)現(xiàn)這個(gè)方法,來(lái)檢測(cè)上傳的合法性

:before-upload=“beforeUploadHandle”

上傳時(shí)需要攜帶參數(shù)

需要上傳的數(shù)據(jù)文件以及參數(shù)在這里來(lái)處理添加

:http-request=“handleUploadForm”

檢測(cè)添加文件是否超過(guò)限制

:on-exceed=“handleExceed”

手動(dòng)上傳

其中的upload對(duì)應(yīng)于上面的ref=“upload”,我們只需要給按鈕實(shí)現(xiàn)一個(gè)方法執(zhí)行此語(yǔ)句便可以實(shí)現(xiàn)自己點(diǎn)擊上傳

this.$refs.upload.submit();

具體實(shí)現(xiàn)

上傳限制以及上傳之前的校驗(yàn)不贅述,這里給出一個(gè)簡(jiǎn)單的demo。上傳限制實(shí)現(xiàn)類似,只是給出一些提示信息,file便是我們上傳的文件。 

    beforeUploadHandle(file) {
      if (
          file.type !== "image/png" &&
          file.type !== "image/jpeg"
      ) {
        this.$message.error("只支持.jpg、.jpeg、.jpe、.png文件!");
        return false;
      }
    },

攜帶參數(shù)

handleUploadForm(param) {
      console.log(this.pid)
      let thisInfo = this
      let formData = new FormData()
      // 在formData中加入我們需要的參數(shù)
      formData.append('file', param.file)
    	formData.append('id', this.pid)
    // 向后端發(fā)送數(shù)據(jù)
      thisInfo.$axios.post('api/user/update_Info/', formData).then((res) => {
        if (res.status === 200) {
          thisInfo.$message.success('修改信息成功')
        } else {
          thisInfo.$message.success('修改信息失敗')
        }
        thisInfo.formFileList = []
        thisInfo.uploadFormFileList = []
      })
    }

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • vue動(dòng)態(tài)路由配置及路由傳參的方式

    vue動(dòng)態(tài)路由配置及路由傳參的方式

    這篇文章主要介紹了vue動(dòng)態(tài)路由配置,vue路由傳參的方式,文中給大家提到了router-link這個(gè)組件的相關(guān)知識(shí),需要的朋友可以參考下
    2018-05-05
  • vue 插槽簡(jiǎn)介及使用示例

    vue 插槽簡(jiǎn)介及使用示例

    這篇文章主要介紹了vue 插槽簡(jiǎn)介及使用示例,幫助大家更好的理解和學(xué)習(xí)vue框架,感興趣的朋友可以了解下
    2020-11-11
  • vue 修改 data 數(shù)據(jù)問(wèn)題并實(shí)時(shí)顯示操作

    vue 修改 data 數(shù)據(jù)問(wèn)題并實(shí)時(shí)顯示操作

    這篇文章主要介紹了vue 修改 data 數(shù)據(jù)問(wèn)題并實(shí)時(shí)顯示操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • VueX?mapGetters獲取Modules中的Getters方式

    VueX?mapGetters獲取Modules中的Getters方式

    這篇文章主要介紹了VueX?mapGetters獲取Modules中的Getters方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • uniapp?vue與nvue輪播圖之輪播圖組件的示例代碼

    uniapp?vue與nvue輪播圖之輪播圖組件的示例代碼

    這篇文章主要介紹了uniapp?vue與nvue輪播圖輪播圖組件的實(shí)例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • Vue中使用mixins混入方式

    Vue中使用mixins混入方式

    這篇文章主要介紹了Vue中使用mixins混入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Vue computed與watch用法區(qū)分

    Vue computed與watch用法區(qū)分

    watch和computed都是以Vue的依賴追蹤機(jī)制為基礎(chǔ)的,當(dāng)某一個(gè)依賴型數(shù)據(jù)發(fā)生變化的時(shí)候,所有依賴這個(gè)數(shù)據(jù)的相關(guān)數(shù)據(jù)會(huì)自動(dòng)發(fā)生變化,即自動(dòng)調(diào)用相關(guān)的函數(shù),來(lái)實(shí)現(xiàn)數(shù)據(jù)的變動(dòng),這篇文章簡(jiǎn)單介紹下Vue中computed和watch的區(qū)別異同,感興趣的朋友一起看看吧
    2023-02-02
  • Vue.js與Flask/Django后端配合方式

    Vue.js與Flask/Django后端配合方式

    在現(xiàn)代Web開(kāi)發(fā)中,Vue.js與Flask或Django配合使用,實(shí)現(xiàn)前后端分離,提高開(kāi)發(fā)效率和應(yīng)用性能,本文介紹了整合Vue.js和Flask/Django的步驟,包括環(huán)境搭建、API編寫、項(xiàng)目配置,以及生產(chǎn)部署,此架構(gòu)不僅加快了開(kāi)發(fā)進(jìn)程,還提高了項(xiàng)目的可維護(hù)性和可擴(kuò)展性
    2024-09-09
  • vue框架實(shí)現(xiàn)將側(cè)邊欄完全隱藏

    vue框架實(shí)現(xiàn)將側(cè)邊欄完全隱藏

    這篇文章主要介紹了vue框架實(shí)現(xiàn)將側(cè)邊欄完全隱藏,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue實(shí)現(xiàn)錄音功能js-audio-recorder帶波浪圖效果的示例

    vue實(shí)現(xiàn)錄音功能js-audio-recorder帶波浪圖效果的示例

    這篇文章主要介紹了vue實(shí)現(xiàn)錄音功能js-audio-recorder帶波浪圖效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08

最新評(píng)論

永泰县| 济阳县| 林州市| 九台市| 三亚市| 垦利县| 隆子县| 绥芬河市| 望都县| 兴和县| 寿阳县| 金坛市| 焦作市| 和林格尔县| 安丘市| 祁阳县| 修武县| 通化县| 黑河市| 沧州市| 新竹县| 敦煌市| 哈密市| 元阳县| 邵阳市| 含山县| 延吉市| 蚌埠市| 陈巴尔虎旗| 元朗区| 江华| 白玉县| 建瓯市| 长子县| 岳池县| 沈阳市| 贵港市| 抚松县| 金山区| 南康市| 江油市|