问题描述:
在下面的代码中,我使用el-upload上传了一张图片,经输出,在handleChange及confirmSaveCfg方法中输出的selectFile都为File类型,且包含uid、lastModified等多个字段

但我在点击confirmSaveCfg提交到后端时,file的参数却变成了{uid:112121212}这个,而不是之前的File类型,这到底是什么原因呢?

<el-form
label-position="right"
label-width="auto"
:model="state.cfgForm"
style="max-width: 600px"
>
<el-form-item label="网站名称">
<el-input v-model="state.cfgForm.proTitle" />
</el-form-item>
<el-form-item label="网站logo地址">
<!-- <el-input type="file" v-model="state.cfgForm.logoPath"></el-input> -->
<el-upload
ref="uploadRef"
action="#"
:limit="1"
:on-exceed="handleExceed"
:on-change="handleChange"
:auto-upload="false"
accept="image/jpeg, image/png"
>
<template #trigger>
<el-button type="primary" @click="handleUploadClick">上传logo图片</el-button>
</template>
<template #tip>
<div class="el-upload__tip text-red">
请上传特定尺寸的png或者jpg图片
</div>
</template>
</el-upload>
</el-form-item>
</el-form>
const handleChange = (file: any, fileList:CustomFile[]) => {
console.log('chnage file', file);
state.selectFile = file.raw
console.log('selectFile', state.selectFile);
}
// 保存配置项
const confirmSaveCfg = () => {
console.log('selectFile', state.selectFile);
if (state.selectFile) {
// 参数改成formData类型
let params = new FormData()
params.append('title', state.cfgForm.proTitle)
params.append('file', state.selectFile)
// 将文件上传到服务器,并获取返回的url
uploadTitleAndLogo(params).then(async res => {
console.log('res', res);
// if (response.success == true) {
// state.cfgForm.logoPath = response.data
// await configStore.setLogoUrl(response.data)
// ElMessage.success('上传成功')
// } else {
// console.log("后端传回报错信息")
// }
})
} else {
ElMessage.error('请选择要上传的图片')
}
}