在Vue中使用Element UI的<el-upload>
组件来封装一个上传文件的功能,可以创建一个自定义组件,如下所示:
<template>
<el-upload
:action="uploadUrl"
:headers="uploadHeaders"
:on-success="handleSuccess"
:on-error="handleError"
:before-upload="beforeUpload"
>
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
</template>
<script>
export default {
data() {
return {
uploadUrl: 'your-upload-api-url', // 替换为你的上传API地址
uploadHeaders: { Authorization: 'Bearer your-token' } // 如果需要的话,添加上传的headers
};
},
methods: {
beforeUpload(file) {
const isJPG = file.type === 'image/jpeg' || file.type === 'image/png';
const isLt500K = file.size / 1024 / 1024 < 0.5;
if (!isJPG) {
this.$message.error('上传头像图片只能是 JPG 或 PNG 格式!');
}
if (!isLt500K) {
this.$message.error('上传头像图片大小不能超过 500KB!');
}
return isJPG && isLt500K;
},
handleSuccess(response, file, fileList) {
// 成功处理逻辑
console.log('File uploaded successfully:', response);
},
handleError(err, file, fileList) {
// 错误处理逻辑
console.error('Error while uploading file:', err);
}
}
};
</script>
在这个例子中,我们创建了一个封装了Element UI <el-upload>
组件的Vue组件。我们设置了上传的URL和需要的headers,并提供了beforeUpload
方法来进行文件类型和大小的校验。handleSuccess
和handleError
方法分别处理文件上传成功和失败的情况。这样,你可以在你的应用中重复使用这个上传组件,而不需要每次都写重复的代码。