el-upload当设置auto-upload为false时,before-upload钩子未触发
warning:
这篇文章距离上次修改已过429天,其中的内容可能已经有所变动。
el-upload 组件在 Vue.js 中使用时,当设置 auto-upload 属性为 false 时,意味着文件上传不会在选择文件后自动触发,而是需要手动触发。这种情况下,before-upload 钩子函数不会在文件选择时自动触发,而是会在调用 submit 方法时触发。
以下是一个简单的例子,展示了如何在不自动上传的情况下使用 el-upload 组件,并且如何在手动触发上传前使用 before-upload 钩子进行文件校验:
<template>
<el-upload
ref="upload"
:auto-upload="false"
:before-upload="beforeUpload"
action="https://your-upload-api"
>
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
<el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button>
</el-upload>
</template>
<script>
export default {
methods: {
beforeUpload(file) {
// 在这里进行文件校验
if (file.size / 1024 / 1024 > 2) {
this.$message.error('文件大小不能超过 2MB!');
return false;
}
return true;
},
submitUpload() {
this.$refs.upload.submit();
}
}
};
</script>在这个例子中,beforeUpload 方法会在用户手动点击上传按钮后调用,并且它会在 submitUpload 方法中调用 this.$refs.upload.submit() 后触发。如果 beforeUpload 返回 false,文件将不会被上传。如果返回 true 或者 nothing(因为 undefined 会被当作 true),文件将会被上传。
评论已关闭