el-upload 没有 uploadFiles属性了
时间: 2024-01-18 22:18:27 浏览: 28
el-upload 组件的 uploadFiles 属性已经被移除了。现在,可以通过监听 file-list 属性的变化来实现上传文件的功能。当 file-list 发生变化时,组件会自动上传文件。
以下是一个示例代码:
```html
<template>
<el-upload :file-list="fileList" @change="handleFileChange">
<el-button slot="trigger">点击上传</el-button>
</el-upload>
</template>
<script>
export default {
data() {
return {
fileList: []
};
},
methods: {
handleFileChange(file, fileList) {
// 处理文件变化的逻辑
// 可以在这里调用上传文件的接口
}
}
};
</script>
```
在上面的代码中,我们使用了 file-list 属性来绑定文件列表,并通过 @change 事件监听文件变化。当文件发生变化时,会触发 handleFileChange 方法,你可以在这个方法中处理文件上传的逻辑。
相关问题
el-upload onExceed 使用
在Vue中,el-upload是Element UI库中的一个组件,用于实现文件上传功能。onExceed是el-upload组件的一个事件,当文件超出设定的限制时触发。
使用el-upload组件时,可以通过监听onExceed事件来处理文件超出限制的情况。具体的使用方法如下:
1. 在Vue组件中引入el-upload组件:
```vue
<template>
<el-upload
action="/upload"
:on-exceed="handleExceed"
>
<el-button slot="trigger" size="small" type="primary">点击上传</el-button>
</el-upload>
</template>
```
2. 在Vue组件的methods中定义handleExceed方法来处理文件超出限制的情况:
```vue
<script>
export default {
methods: {
handleExceed(files, fileList) {
this.$message.warning(`只能上传 ${this.limit} 个文件`);
}
}
}
</script>
```
在handleExceed方法中,可以通过this.$message来弹出提示框,告知用户超出限制的信息。
需要注意的是,el-upload组件还有其他一些属性和事件可以使用,比如before-upload用于上传前的校验、on-success用于上传成功后的回调等。你可以根据具体需求来使用这些属性和事件。
el-upload 进度条
要在el-upload组件中添加进度条,你可以使用`show-upload-list`属性来显示上传列表,并利用插槽来自定义列表的内容。以下是一个示例代码:
```html
<template>
<el-upload
ref="upload"
class="upload-demo"
action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
:limit="1"
:on-exceed="handleExceed"
:auto-upload="false"
:show-upload-list="true"
:on-progress="handleProgress"
:on-preview="handlePreview"
>
<template #trigger>
<el-button type="primary">select file</el-button>
</template>
<el-button class="ml-3" type="success" @click="submitUpload">
upload to server
</el-button>
<template #tip>
<div class="el-upload__tip text-red">
limit 1 file, new file will cover the old file
</div>
</template>
<template #default="{ file }">
<div class="el-upload-list__item is-uploading">
<div class="el-upload-list__item-thumbnail">
<img :src="file.url" alt="">
</div>
<div class="el-upload-list__item-content">
<span class="el-upload-list__item-name">{{ file.name }}</span>
<el-progress class="el-upload-list__item-progress" :percentage="file.percentage" />
</div>
</div>
</template>
</el-upload>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { genFileId } from 'element-plus';
import type { UploadInstance, UploadProps, UploadRawFile } from 'element-plus';
const upload = ref<UploadInstance>();
const handleExceed: UploadProps['onExceed'] = (files) => {
upload.value!.clearFiles();
const file = files[0] as UploadRawFile;
file.uid = genFileId();
upload.value!.handleStart(file);
};
const handleProgress: UploadProps['onProgress'] = (event, file, fileList) => {
file.percentage = (event.loaded / event.total) * 100;
};
const submitUpload = () => {
upload.value!.submit();
};
export default {
setup() {
return { upload, handleExceed, handleProgress, submitUpload };
},
};
</script>
```
在上述代码中,我们使用了`show-upload-list`属性来显示上传列表,并使用默认插槽来定义列表的内容。在列表项中,我们添加了一个进度条组件`<el-progress>`来展示文件上传的进度。`on-progress`事件监听文件的上传进度,将进度值赋给文件对象的`percentage`属性,在模板中使用该属性来显示进度条。
请注意,这里使用的是Vue 3的`<script setup>`语法,你可以根据自己的项目配置进行调整。