日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

vue+element_ui上傳文件,并傳遞額外參數(shù)操作

瀏覽:24日期:2022-10-21 09:13:42

需求:

1、文件大小驗(yàn)證

2、文件類型驗(yàn)證

3、額外參數(shù)傳輸

<template> <el-upload action :limit='1' :file-list='formFileList' :http-request='handleUploadForm' :on-exceed='formHandleExceed' :on-remove='formHandleRemove' :before-upload='beforeUploadForm' accept='.csv,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel'> <el-button type='primary'>上傳文件</el-button> <span slot='tip' style='margin: 0 10px;'>只能上傳xlsx/xls/csv文件,且不超過{{formMaxSize}}M</span> </el-upload></template><script>export default { data () { return { formMaxSize: 10, // 上傳文件大小 formFileList: [], // 顯示上傳文件 uploadFormFileList: [] // 確定上傳文件 } }, methods: { // 開始上傳前驗(yàn)證 beforeUploadForm (file) { // 驗(yàn)證文件大小 if (file.size / 1024 / 1024 > this.formMaxSize) { this.$message({ message: `上傳文件大小不能超過${this.formMaxSize}M!`, type: ’warning’ }) return false } // 中文亂碼處理 if (file.raw) { let reader = new FileReader() // 讀取文件內(nèi)容 reader.readAsText(file.raw, ’gb2312’) // 防止中文亂碼問題,不加reader.onload方法都不會(huì)觸發(fā) reader.onload = function (e) { this.contentHtml = e.target.result // txt文本內(nèi)容,接下來就可以對其進(jìn)行校驗(yàn)處理了 } } // 驗(yàn)證文件類型 var testmsg = file.name.substring(file.name.lastIndexOf(’.’) + 1) const extension = testmsg === ’xlsx’ || testmsg === ’xls’ || testmsg === ’csv’ if (!extension) { this.$message({ message: ’上傳文件只能是xlsx/xls/csv格式!’, type: ’warning’ }) } return extension }, // 移除上傳列表中文件 formHandleRemove (file, formFileList) { let thiz = this for (let i = 0; i < thiz.uploadFormFileList.length; i++) { if (thiz.uploadFormFileList[i].pname === file.name) { thiz.uploadFormFileList.splice(i, 1) break } } }, // 允許上傳文件個(gè)數(shù)驗(yàn)證 formHandleExceed (files, formFileList) { this.$message.warning(`當(dāng)前限制選擇 1 個(gè)文件,本次選擇了 ${files.length} 個(gè)文件,共選擇了 ${files.length + formFileList.length} 個(gè)文件`) }, // 上傳文件 handleUploadForm (param) { let thiz = this let formData = new FormData() formData.append(’uid’, ’上傳文件編號’) // 額外參數(shù) formData.append(’files’, param.file) let loading = thiz.$loading({ lock: true, text: ’上傳中,請稍候...’, spinner: ’el-icon-loading’, background: ’rgba(0, 0, 0, 0.7)’ }) thiz.$axios.post(’http://localhost:8080/upload/file’, formData).then(({data}) => { if (data.statusCode === 233) { thiz.$message(’上傳文件成功,’ + data.message) thiz.formFileList = [] thiz.uploadFormFileList = [] } else { thiz.formFileList = [] thiz.uploadFormFileList = [] thiz.$message(’上傳文件失敗,’ + data.message) } loading.close() }) } }}</script><style lang='scss' scoped></style>

總結(jié):

關(guān)于el-upload中各屬性的配置,可以看element_ui官網(wǎng)

后端接受上傳文件和額外參數(shù):

@RequestParam(value = 'uid') String uid, @RequestParam(value = 'files') MultipartFile[] files

補(bǔ)充知識(shí):vue利用elementUI上傳文件以及其他參數(shù)的處理方式

將文件自動(dòng)上傳改為false

:auto-upload='false'

點(diǎn)擊保存的時(shí)候,調(diào)用el-upload的上傳方法

代碼如下(封裝的上傳方法)

export function mpp(data) { return new Promise(function(resolve, reject) { let data = { method: 'POST', url:url, data:data } resolve(axios(data)); })}<template>

<!--導(dǎo)入計(jì)劃 --><div class='associationPlan'> <el-form :model='dataModel' :rules='rules' ref='associationPlan' label-width='100px'> <el-form-item label='項(xiàng)目名稱:' prop='projectArry'> <el-cascader :options='listOrgInfoList' v-model='dataModel.projectArry' :props='defaultProp' size='small' placeholder='請選擇項(xiàng)目' clearable :disabled='isCompany'></el-cascader> </el-form-item> <el-form-item label='計(jì)劃級別:' prop='level'> <el-select size='small' v-model='dataModel.level' placeholder='請選擇:' clearable style='width:100%;'><el-option v-for='(item,index) in planTypeList' :label='item.name' :value='item.number' :key='index'></el-option> </el-select> <span v-if='dataModel.level==1'>一級進(jìn)度計(jì)劃匹配項(xiàng)目總工期,項(xiàng)目下只可建立一個(gè),請確認(rèn)后再添加!</span> </el-form-item> <el-form-item label='計(jì)劃名稱:' prop='name'> <el-input v-model.number='dataModel.name' size='small'></el-input> </el-form-item> <el-form-item label='導(dǎo)入計(jì)劃:'> <el-upload accept='.mpp' ref='uploadAdd' action='' :auto-upload='false' :http-request='uploadImg' :on-success='uploadImgSuccess' :on-remove='handleRemove'> <el-button size='small' type='success'>請選擇文件</el-button> </el-upload> </el-form-item> </el-form> <div class='clickBtn'> <el-button @click='close' size='small'>取消</el-button> <el-button @click='commit' size='small' type='primary'>保存</el-button> </div></div></template>

<script>import { mapState, mapActions } from ’vuex’;import { plan,mpp} from '../api/system_interface.js';export default { name: 'associationPlan', data() { return { dataModel: { projectId: ’’, projectArry:[], level:null, name:’’, parentId:’0’ }, defaultProp: { children: 'child', label: 'name', value: 'id' }, //數(shù)據(jù)校驗(yàn) rules: { projectArry: [{ required: true, message: '請選擇項(xiàng)目', trigger: 'blur' }], name: [{ required: true, message: '請輸入計(jì)劃名稱', trigger: 'blur' }], level: [{ required: true, message: '請選擇計(jì)劃級別', trigger: 'change' }] }, file:false, isCompany:false }; }, computed: { ...mapState([ ’listOrgInfoList’, ’planTypeList’ ]), }, methods: { ...mapActions([ ’getlistOrgInfoList’ ]), update(){ let companyTypes = sessionStorage.getItem('companyType'); this.isCompany = companyTypes == 4?true:false; this.dataModel.projectArry = JSON.parse(sessionStorage.getItem('selectArry')); }, uploadImg (f) { // if(!f){ // this.$message.error('請上傳文件!'); // return // } this.dataModel.projectId = this.dataModel.projectArry[this.dataModel.projectArry.length - 1]; let param = new FormData(); //創(chuàng)建form對象 param.append(’file’,f.file);//通過append向form對象添加數(shù)據(jù) param.append(’level’,this.dataModel.level);//添加form表單中其他數(shù)據(jù) param.append(’projectId’,this.dataModel.projectId);//添加form表單中其他數(shù)據(jù) param.append(’planName’,this.dataModel.name);//添加form表單中其他數(shù)據(jù) mpp(param)//上傳 .then(response=>{ if(response.code == '200'){ this.$message.success('上傳成功!'); this.close(); this.$emit('refreshData'); onSuccess(response.data); } }) .catch(({err}) => { f.onError() }) }, uploadImgSuccess(response, file, fileList) { // 緩存接口調(diào)用所需的文件路徑 console.log(’文件上傳成功’) // this.$message.success('上傳成功!'); }, handleRemove(file, fileList) { // 更新緩存文件 console.log(’文件刪除’) }, //重置方法 reset() { const associationPlan = this.$refs['associationPlan']; associationPlan.resetFields(); this.dataModel.projectId = null; this.dataModel.name = ’’; this.dataModel.level = ’’; this.dataModel.projectArry = []; }, //關(guān)閉彈框 close() { this.$emit('close'); this.reset(); }, //點(diǎn)擊提交 commit() { this.$refs['associationPlan'].validate(valid => { if (!valid) { return; } this.$refs.uploadAdd.submit(); // this.dataModel.projectId = this.dataModel.projectArry[this.dataModel.projectArry.length - 1]; // plan(this.dataModel) // .then(response => { // if (response.code == '200') { // this.$message.success('添加成功!'); // this.close(); // this.$emit('refreshData'); // } else { // this.$message.error(response.msg); // } // }) // .catch(error => { // }); }); }, }};

</script><style lang='scss' scoped>.clickBtn { text-align: center;}.warnInfo{ // color: #feba51; color: rgb(64, 158, 255);}</style>

以上這篇vue+element_ui上傳文件,并傳遞額外參數(shù)操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免播放器亚洲| 岛国精品一区| 欧美一区二区三区免费看| 亚洲欧美日韩一区在线观看| re久久精品视频| 女人天堂亚洲aⅴ在线观看| 日日夜夜免费精品| 亚洲天堂黄色| 在线综合视频| 蜜臀av一区二区在线免费观看| 在线看片日韩| 欧美日本精品| 久久不见久久见中文字幕免费| 国产成人a视频高清在线观看| 日韩中文字幕1| 麻豆精品久久久| 日本欧美国产| 亚洲精品字幕| 国产麻豆一区二区三区精品视频| 欧美成人日韩| 国产不卡精品在线| av中文资源在线资源免费观看| 精品一区不卡| 欧美性感美女一区二区| 日韩中文字幕亚洲一区二区va在线 | 在线视频观看日韩| 亚洲黄页一区| 亚洲精品字幕| 久久wwww| 欧美午夜不卡影院在线观看完整版免费| 另类av一区二区| 欧美精品成人| 久久在线免费| 国产乱子精品一区二区在线观看| 丰满少妇一区| 另类国产ts人妖高潮视频| 麻豆成人综合网| 日韩视频在线一区二区三区 | 国产精品三p一区二区| 欧美xxxx中国| 伊人精品久久| 日韩成人免费| 香蕉久久久久久| 蜜桃视频在线网站| 四虎精品一区二区免费| 给我免费播放日韩视频| 国产乱人伦精品一区| 精品色999| 精品1区2区3区4区| 日韩专区欧美专区| 欧美一级全黄| 国产不卡人人| 亚洲青青久久| 国产精品巨作av| av中文字幕在线观看第一页| 福利欧美精品在线| 久久不射网站| 综合日韩av| 日本欧美韩国一区三区| 欧美69视频| 麻豆精品av| 亚洲精品一级二级三级| 久久精品av| 精品一区二区三区视频在线播放| 国产精品嫩草99av在线| 精品网站999| 日韩av黄色在线| 亚洲精品91| 中文在线中文资源| 亚久久调教视频| 99精品在线观看| 国产一区二区三区天码| 日本精品久久| 日本欧洲一区二区| 久久久夜夜夜| 日韩欧美午夜| аⅴ资源天堂资源库在线| 国产精品玖玖玖在线资源| 日本亚洲不卡| 亚洲一区日本| 久久免费国产| 国产精品毛片久久| 国产精品v亚洲精品v日韩精品| 亚洲精品大片| 亚州av乱码久久精品蜜桃| 国产高清不卡| 国内精品亚洲| 91成人精品观看| 欧美日韩精品一区二区三区在线观看| 7777精品| 日韩中文字幕麻豆| 香蕉精品999视频一区二区| 欧美日韩高清| 亚洲精选av| 日韩激情一二三区| 鲁鲁在线中文| 国产专区精品| 日韩毛片一区| 五月激激激综合网色播| 久久天堂成人| 国产福利片在线观看| 麻豆视频一区二区| 欧美激情福利| 91精品一区| 国产欧美一区二区三区国产幕精品| 喷白浆一区二区| 美女视频网站久久| 国产一区二区三区久久久久久久久| 国产精东传媒成人av电影| 国产精品中文字幕制服诱惑| 国产精品久久久久久久久久齐齐| 国产日韩免费| 国产精品99久久免费观看| 久久av导航| 国产精品密蕾丝视频下载| 国产精品白丝久久av网站| 精品国产午夜| 999国产精品视频| 一区福利视频| 午夜性色一区二区三区免费视频| 欧美一级二级视频| 国产一区不卡| 欧美特黄视频| 日日摸夜夜添夜夜添国产精品| 国产美女亚洲精品7777| 国产v日韩v欧美v| 五月天久久777| 日韩高清不卡在线| 粉嫩av一区二区三区四区五区| 久久久久免费av| 99成人在线视频| 蜜桃视频一区二区三区| 国产毛片精品| 久久中文字幕av一区二区不卡| 午夜一区在线| 久久99精品久久久野外观看| 久久久久久美女精品| 在线精品观看| zzzwww在线看片免费| 欧美精品黄色| 欧美亚洲福利| 久久精品播放| 日韩激情视频网站| 久久国产免费| 日韩不卡一区二区| 国产精东传媒成人av电影| 欧美午夜精彩| 91嫩草精品| 国产精品xx| 亚洲激情另类| 久久国内精品自在自线400部| 日韩成人免费| 亚洲色图综合| 欧美日本不卡| 精品国产中文字幕第一页| 九九在线精品| 一区二区91| 亚洲美女久久精品| 欧美一级精品| 色综合视频一区二区三区日韩 | 福利精品在线| 伊人精品久久| 美女精品久久| 亚洲免费一区三区| 麻豆一区二区在线| 蜜桃久久久久久| 狠狠久久伊人| 国产高清亚洲| 久久成人国产| 国产一级成人av| 91久久午夜| 国产精品99久久免费观看| 三级欧美韩日大片在线看| 国产精品videosex极品| 免费日韩视频| 日韩一二三区在线观看| 久久精品国产大片免费观看| 伊人久久亚洲| 日韩免费高清| 精品一区电影| 中文不卡在线| 亚洲欧美一区在线| 日韩av影院| 热久久久久久久| 国产精品欧美在线观看| 首页国产欧美久久| 国产一区不卡| 欧美交a欧美精品喷水| 亚洲日本三级| 黄色国产精品| 久久国产亚洲| 欧美国产极品| 国产精品亚洲二区| 亚洲丝袜啪啪| 日韩一级网站| 精品高清久久| 久久国产尿小便嘘嘘| 日韩av不卡在线观看| 亚洲一区激情| 久久中文字幕av一区二区不卡|