Element-plus Upload组件 文件同表单一起上传的处理
element-plus
element-plus/element-plus: Element Plus 是一个基于 Vue 3 的组件库,提供了丰富且易于使用的 UI 组件,用于快速搭建企业级桌面和移动端的前端应用。
项目地址:https://gitcode.com/gh_mirrors/el/element-plus
免费下载资源
·
需求
实现一个表单,内容包括键值对数据和文件数据。
表单如下:
需要将文件和task name
、task message
以及task type
等数据同文件一起传给服务器。
实现
首先element-plus
官网UpLoad
是有完整的文件上传步骤的,但为仅文件上传,没有其他数据,所以需要自己写数据上传,使用UpLoad
组件来获取用户选择的文件。
然后
HTML部分
注意:如果小伙伴要复制下方代码,在运行时要删除所有的注释,不然会报错,该注释仅仅是为了解释。
<el-upload
class="upload-demo" // class
action="none" // 不使用组件自带的上传功能
multiple // 支持多选文件
accept=".h5ad" // 限制文件类型为.h5ad类型
:file-list="formOptions.data.addFileList" // 绑定数据
:auto-upload="false" // 关闭自动上传(因为该组件仅仅是用来收集文件的,文件的上传同其他数据一起)
>
<template #trigger>
<el-button type="primary" size="small">select file</el-button> // 选择文件按钮
</template>
<template #tip>
<div class="el-upload__tip">
The file format is h5ad only. // 文件上传提示
</div>
</template>
</el-upload>
JS部分
// 校验当前数据是否符合标准
if (!ConformToTheStandard()) return;
const formData = getFormData(); // 获取要穿给后端的标准结构数据
getCreateTask(formData).then(res => {
if (res.state) {
ElNotification({
message: 'Task creation succeeded',
type: 'success',
duration: 0,
})
} else {
console.warn('warn')
}
})
function getFormData(): FormData {
// 要用FormData来承载文件!这是重点
const formData = new FormData();
// 向formData中添加数据
formData.append('userId', String(store.getters.userId));
formData.append('projectId', String(store.state.currentProjectId));
formData.append('taskName', formOptions.data.taskName);
formData.append('taskMessage', formOptions.data.taskMessage);
formData.append('taskType', formOptions.data.taskType);
formData.append('creationMethod', formOptions.data.creationMethod);
// formData可以添加同名数据,在获取的时候可根据名称获得所有key为该名称的数据。
formOptions.data.addFileList.forEach(v => {
formData.append('addFiles', v.raw)
})
return formData;
}
formOptions.data.addFileList:
重点:Upload
组件获取的一个文件数据如下,其中raw
对象才为文件数据对象,是要将每个文件的raw
对象放到FormData
中传给服务器的。
结果
服务器能够根据前端发送的数据解析到文件数据。万事大吉!
GitHub 加速计划 / el / element-plus
23.88 K
15.38 K
下载
element-plus/element-plus: Element Plus 是一个基于 Vue 3 的组件库,提供了丰富且易于使用的 UI 组件,用于快速搭建企业级桌面和移动端的前端应用。
最近提交(Master分支:1 个月前 )
c1863f50
3 个月前
b55163fd
3 个月前
更多推荐
已为社区贡献2条内容
所有评论(0)