element 取消自定义文件上传_vue+element 实现选取文件,提交上传全部表单信息(同步)...

本文展示了如何使用Vue和Element UI库创建一个自定义文件上传组件,支持选择.apk文件,限制上传数量,并在上传成功后清除表单数据。组件包括上传前的文件验证、文件超出限制提示、文件移除、表单重置等功能。通过调用接口进行文件上传,并在上传成功后更新界面状态。
摘要由CSDN通过智能技术生成

0e57dd44f041b56720ad43b87a87b188.png

60199183c40dfba10a0d66017b85469d.png

代码如下:

<el-form-item label="Android客户端文件:" prop="file" ref="uploadpic">
<el-upload
class="upload-demo"
ref="upload"
:headers="headers"
:action="updateUrl"
:data="addData"
:before-upload="beforeUpload"
:on-exceed="handleExceed"
:on-remove="handleRemove"
:on-success="handleAvatarSuccess"
:on-change="fileChange"
:file-list="fileList"
:limit="1"
:multiple="false"
:auto-upload="false">
<el-button ref="upload" slot="trigger" size="small" type="primary" >选取文件</el-button>
<div slot="tip" class="el-upload__tip">支持扩展名:.apk</div>
</el-upload>
</el-form-item>

data中变量:

a1711e621b6002aad9a18bb01b5bf9dc.png

接口地址:mounte

a29e495a7d1602ad15939d0e30d43bb3.png

处理方法:

onAdd(formName,resetFields) {
if(resetFields=='resetFields'){
this.$refs[formName].resetFields();
this.fileList=[];
}else{
this.$refs[formName].validate((valid) => {
if (valid) {
this.isDisabled=true;
setTimeout(()=>{
this.isDisabled=false;// 上传包文件
this.$refs.upload.submit();
},2000)
} else {
return false;
}
})
}
},//上传成功
handleAvatarSuccess(resp, file, fileList) {
console.log('创建版本~~',resp)
this.$refs['upload'].clearFiles();
if(resp.retCode=="2000"){
}else{
this.tip.successTip=true;
this.tip.tipContent='添加失败';
this.$bus.$emit("tip",this.tip);
}
this.fileList=[];
},
onReset(formName){
this.visible = false;
this.$bus.$emit("visible",this.visible);
this.$refs[formName].resetFields();
this.$refs['upload'].clearFiles();
},
fileChange(file, fileList, name){
console.log(fileList)
this.fileList["file"] = fileList;// 如果上传了就不显示提示图片警告
if (typeof this.fileList.file != "undefined") {
if (this.fileList.file.length > 0) {
this.$refs["uploadpic"].clearValidate();
}
}
},// 文件上传前的钩子(这里可以对文件上传时的后缀进行限制)
beforeUpload(file) {
console.log(file)var FileExt = file.name.replace(/.+./, '')
if (['apk'].indexOf(FileExt) === -1) {
this.$message.warning("请上传后缀名为 apk 的文件!", 2);
return false
}
},
handleExceed(files, fileList) {
this.$message.warning(`当前限制选择 1 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
},
handleRemove(file, fileList) {
console.log(file, fileList);
},

Element Plus 是一个基于 Vue 3 的组件库,其中包含了丰富的 UI 组件,包括文件上传组件 `ElUpload`。通过使用 `ElUpload` 组件,用户可以方便地上传文件,并且还可以与表单一起提交文件数据。 在 Element Plus 中,`ElUpload` 组件提供了两种文件上传模式:`button` 和 `drag`。你可以通过设置 `action` 属性来指定上传的服务器地址。当用户选择文件后,可以通过事件来获取这些文件,并将它们添加到表单数据中进行提交。 以下是使用 Element Plus 的 `ElUpload` 组件进行文件上传提交表单的基本步骤: 1. 在 Vue 组件中引入 `ElUpload` 组件。 2. 设置 `ElUpload` 的 `action` 属性为你的上传接口地址。 3. 使用 `before-upload` 钩子函数来处理文件上传前的逻辑,比如校验文件类型和大小。 4. 使用 `on-success` 或 `on-error` 钩子函数来处理文件上传成功或失败后的逻辑。 5. 在 `ElForm` 表单中添加 `ElUpload` 组件,并确保表单有正确的提交机制,比如监听表单提交事件,并在事件处理函数中处理上传后的逻辑。 6. 在表单提交时,`ElUpload` 会自动将已上传文件列表作为表单数据的一部分一起发送到服务器。 示例代码如下: ```html <template> <el-form ref="form" @submit.native.prevent="handleSubmit"> <el-upload action="你的上传接口地址" :before-upload="beforeUpload" :on-success="handleSuccess" :on-error="handleError" list-type="picture"> <el-button size="small" type="primary">选取文件</el-button> </el-upload> <el-form-item> <el-button type="primary" native-type="submit">提交</el-button> </el-form-item> </el-form> </template> <script> export default { methods: { handleSubmit() { // 获取表单引用并调用提交方法 this.$refs.form.validate((valid) => { if (valid) { // 表单验证通过后,可以在这里发送请求将数据提交到服务器 // 由于 Element Plus 会自动处理文件上传,所以这里的 data 应该是表单中剩余的数据 const formData = new FormData(); // 添加其他表单数据到 formData 中... // 最后,使用 axios 或者原生 fetch 发送请求 } }); }, beforeUpload(file) { // 文件上传前的逻辑 // 返回 false 可以阻止上传 return true; }, handleSuccess(response, file, fileList) { // 文件上传成功的处理逻辑 console.log('上传成功', response, file, fileList); }, handleError(err, file, fileList) { // 文件上传失败的处理逻辑 console.error('上传失败', err, file, fileList); } } }; </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值