- 安装和引入 Element Plus 相关组件
- 首先确保已经安装了 Element Plus。如果没有安装,可以通过
npm install element - plus
命令进行安装。 - 在需要使用文件上传组件的组件中,引入 Element Plus 的文件上传组件
ElUpload
:-
html
复制
<template> <el - upload class="upload - demo" :action="uploadUrl" :on - change="handleChange" :auto - upload="false" :show - file - list="false" > <el - button size="small" type="primary">点击上传</el - button> </el - upload> </template> <script setup> import { ElUpload } from 'element - plus'; import { ref } from 'vue'; import axios from 'axios'; const uploadUrl = ref('your - server - url'); const file = ref(null); const handleChange = (uploadedFile) => { file.value = uploadedFile.raw; if (file.value) { const reader = new FileReader(); reader.onload = function () { const base64Data = reader.result; file.value = base64Data; //可以先在本地显示看看 axios.post(uploadUrl.value, { imageBase64: base64Data }); }; reader.readAsDataURL(file.value); } }; </script> <style scoped>
.upload - demo {
text - align: center;
}
</style> -
- 首先确保已经安装了 Element Plus。如果没有安装,可以通过
plaintext
复制
2. **代码解释**
- **Element Plus文件上传组件配置**:
- 在`template`部分,使用`ElUpload`组件创建文件上传功能。`action`属性指定了上传文件的服务器地址,这里通过`uploadUrl`这个`ref`来动态设置,你需要将`your - server - url`替换为实际的服务器接收数据的接口地址。`:on - change`绑定了`handleChange`方法,这个方法会在文件选择发生变化时被调用。`:auto - upload="false"`表示禁止自动上传,`:show - file - list="false"`表示不显示已上传文件的列表。
- 在`script`部分,通过`import { ElUpload } from 'element - plus';`引入`ElUpload`组件。
- **处理文件选择和转换为`base64`格式**:
- 在`handleChange`方法中,`uploadedFile.raw`获取到原始的文件对象,将其赋值给`file.value`。后续的`FileReader`操作与之前没有使用Element Plus时一样。创建`FileReader`对象,通过`reader.readAsDataURL(file.value)`将文件转换为`Data URL`(`base64`格式),在`reader.onload`的回调函数中获取`base64Data`(即`reader.result`)。
- **发送`base64`数据给服务器**:
- 在`reader.onload`的回调函数中,使用`axios`发送一个`POST`请求,将`base64Data`作为`imageBase64`参数发送给服务器。发送的地址是通过`uploadUrl.value`指定的,这个值可以根据实际情况动态改变。
这样,在Vue 3项目中使用Element Plus的文件上传组件就可以将上传的图片转换为`base64`格式并发送给服务器了。同时,还可以根据具体的业务需求对Element Plus组件的样式和功能进行更多的定制,比如添加文件类型限制、上传进度显示等功能。