element-ui中使用upload組件獲取上傳文件信息
1.使用htttp-request自定義上傳

使用element-ui中的上傳組件,upload,這個(gè)默認(rèn)發(fā)送post請(qǐng)求,
在使用upload組件自動(dòng)攜帶的請(qǐng)求方式發(fā)送
action->請(qǐng)求的urlon-success->請(qǐng)求發(fā)送成功的鉤子–方法function(response, file, fileList)默認(rèn)參數(shù)3個(gè)auto-upload->是否在選取文件后立即進(jìn)行上傳,默認(rèn)是true(選取文件即上傳)name->上傳的文件字段名,默認(rèn)值file,后臺(tái)有時(shí)候需要發(fā)送別的字段名如image就這修改data->上傳時(shí)附帶的額外參數(shù)objectdisabled->是否禁用,默認(rèn)falsehttp-request->覆蓋默認(rèn)的上傳行為,可以自定義上傳的實(shí)現(xiàn)–方法(當(dāng)請(qǐng)求方式不為post可以自定義方式)
下面是兩個(gè)例子
1.使用upload默認(rèn)請(qǐng)求方式post發(fā)送提交圖片請(qǐng)求
后臺(tái)要求文件字段image


在文件上傳成功后,可以從response的data屬性獲取圖片在服務(wù)器上的路徑,文件的具體信息在file.raw中

2.使用upload上傳文件,發(fā)送patch請(qǐng)求數(shù)據(jù)
需要使用http-request鉤子由于覆蓋了其默認(rèn)請(qǐng)求,updateImg中異步請(qǐng)求攜帶了路徑,action中就隨便放了個(gè)網(wǎng)址,action是必傳參數(shù)

http-reques鉤子有個(gè)默認(rèn)參數(shù),val.file可以獲取文件數(shù)據(jù)信息


2.使用手動(dòng)上傳
需求背景
有個(gè)form表單,通過(guò)上傳組件獲取上傳文件信息,點(diǎn)擊彈窗的確定按鈕后,接口統(tǒng)一進(jìn)行上傳;
限制上傳zip類(lèi)型文件,不超過(guò)10M,限制選擇1個(gè)zip包


<!-- 文件上傳-->
<el-form :rules="rules" :model="dataForm" ref="dataForm" label-width="150px" @submit.native.prevent>
<el-form-item label="名稱(chēng):" prop="name">
<el-input type="text" v-model.trim="dataForm.name" clearable></el-input>
</el-form-item>
<el-form-item label="文件:" prop="file" >
<el-upload
class="upload-import"
ref="uploadImport"
action="https://baidu.com/" <!-- 手動(dòng)上傳, action隨便給了個(gè)地址-->
:on-remove="handleRemove"
:file-list="fileList"
:limit="1" <!-- 限制上傳數(shù)量-->
:on-change="handleChange"
:auto-upload="false" <!-- 關(guān)閉自動(dòng)上傳-->
accept="application/zip,.zip"> <!-- 設(shè)置接收的文件類(lèi)型-->
<!-- el-upload組件,在手動(dòng)上傳時(shí),禁用按鈕外, 還需要設(shè)置 :disabled="hasFile" 為true禁用該組件,會(huì)導(dǎo)致上傳列表也被禁用,無(wú)法刪除,因此使用v-show,文件數(shù)量為1時(shí),顯示禁用的的按鈕, slot不綁定trigger事件 -->
<el-button v-show="!hasFile" slot="trigger" size="small" type="primary" >選取文件</el-button>
<el-button v-show="hasFile" size="small" type="primary" disabled>選取文件</el-button>
<div slot="tip" class="el-upload__tip">只能上傳zip文件,且不超過(guò)10M</div>
</el-upload>
</el-form-item>
</el-form>
<script>
export default {
data(){
return {
dataForm: {
name: '',
file: null
},
rules: {
name: [
{required: true, message: "請(qǐng)輸入名稱(chēng)", trigger: "blur"},
{max: 50, message: "最長(zhǎng)可輸入50個(gè)字符", trigger: "blur"},
{validator: isvalidatName, trigger: "blur" },
],
file: [
{required: true, message: "請(qǐng)選擇上傳文件", trigger: "blur"},
]
},
hasFile: false,
fileList: []
},
methods: {
handleRemove(file, fileList) {
if (!fileList.length) {
this.hasFile = false;
}
this.dataForm.file = null;
},
handleChange(file, fileList) {
if (fileList.length >= 2) {
return;
}
if (fileList.length === 1) {
this.hasFile = true;
}
this.dataForm.file = file;
},
//確定按鈕
onSureHandle(){
this.$refs.dataForm.validate(valid => {
if(valid){
let dataPar = this.dataForm;
let fdParams = new FormData();
fdParams.append('name', dataPar.name);
fdParams.append('file', dataPar.file.raw);
axios.post('/interface/importProject', fdParams, {
headers: {'Content-Type': 'multipart/form-data'},//定義內(nèi)容格式,很重要
timeout: 20000,
}).then(response => {
//...some logic
}).catch(err =>{})
}
})
}
}
}
</script>
```總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue中使用elementUI自定義校驗(yàn)及點(diǎn)擊提交不生效問(wèn)題解決辦法
我們?cè)陧?xiàng)目中經(jīng)常會(huì)用到ElementUI的表單驗(yàn)證,下面這篇文章主要給大家介紹了關(guān)于vue中使用elementUI自定義校驗(yàn)及點(diǎn)擊提交不生效問(wèn)題解決的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
Vue中使用a標(biāo)簽下載靜態(tài)資源文件(如excel、pdf等)純前端操作方法
這篇文章主要介紹了Vue中使用a標(biāo)簽下載靜態(tài)資源文件(如excel、pdf等)純前端操作方法的相關(guān)資料,需要的朋友可以參考下2025-02-02
vue中v-for數(shù)據(jù)狀態(tài)值變了,但是視圖沒(méi)改變的解決方案
這篇文章主要介紹了vue中v-for數(shù)據(jù)狀態(tài)值變了,但是視圖沒(méi)改變的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
使用vue2實(shí)現(xiàn)帶地區(qū)編號(hào)和名稱(chēng)的省市縣三級(jí)聯(lián)動(dòng)效果
我們知道省市區(qū)縣都有名稱(chēng)和對(duì)應(yīng)的數(shù)字唯一編號(hào),使用編號(hào)可以更方便查詢(xún)以及程序處理,我們今天來(lái)了解一下使用vue2來(lái)實(shí)現(xiàn)常見(jiàn)的省市區(qū)下拉聯(lián)動(dòng)選擇效果,需要的朋友可以參考下2018-11-11

