写一个elementui的上传按钮,从后端获取数据
时间: 2023-10-19 15:19:22 浏览: 87
好的,以下是一个使用 ElementUI 的上传组件的示例代码,可以从后端获取数据:
```html
<template>
<el-upload
class="upload-demo"
ref="upload"
:action="uploadUrl"
:on-success="handleSuccess"
:before-upload="beforeUpload"
:limit="limit"
:file-list="fileList"
:auto-upload="false"
>
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
<el-button size="small" type="success" @click="uploadFiles">上传文件</el-button>
<div slot="tip" class="el-upload__tip">只能上传{{limit}}个文件,且不超过{{size}}MB</div>
</el-upload>
</template>
<script>
export default {
data() {
return {
uploadUrl: '/api/upload', // 后端上传接口
fileList: [], // 选中的文件列表
limit: 10, // 最多上传文件数量
size: 50, // 最大文件大小,单位 MB
};
},
methods: {
beforeUpload(file) {
// 文件大小限制判断
const isLtSize = file.size / 1024 / 1024 < this.size;
if (!isLtSize) {
this.$message.error(`文件大小不能超过${this.size}MB`);
}
// 数量限制判断
const isLtLimit = this.fileList.length < this.limit;
if (!isLtLimit) {
this.$message.error(`最多只能上传${this.limit}个文件`);
}
return isLtSize && isLtLimit;
},
handleSuccess(response, file, fileList) {
// 上传成功后的回调函数
const data = response.data;
fileList[fileList.length - 1].url = data.url;
fileList[fileList.length - 1].name = data.name;
},
uploadFiles() {
// 手动触发上传
this.$refs.upload.submit();
},
},
};
</script>
```
在这个示例中,我们使用了 ElementUI 的 `el-upload` 组件来实现文件上传功能。在 `data` 中,我们定义了上传接口 `uploadUrl`、选中的文件列表 `fileList`、最多上传文件数量 `limit`、最大文件大小 `size` 等参数。
在 `beforeUpload` 方法中,我们对文件大小和数量进行了限制判断,如果不符合要求,就会弹出错误提示并取消上传。在 `handleSuccess` 方法中,我们可以获取上传成功后返回的数据,并给选中的文件列表中对应的文件添加 `url` 和 `name` 属性。
最后,在上传文件时,我们通过手动触发 `submit` 方法来实现。
阅读全文