在vue3中使用input标签上传Excel格式的文件到服务器,上传的时候还需要带上参数projectId,且文件格式限定为Excel,请给一个案例
时间: 2024-03-14 21:49:15 浏览: 16
好的,下面是一个Vue3的示例代码:
```vue
<template>
<div>
<input type="file" ref="fileInput" @change="uploadFile">
</div>
</template>
<script>
import axios from 'axios';
export default {
methods: {
async uploadFile() {
const file = this.$refs.fileInput.files[0];
const projectId = '12345';
// 检查文件格式是否正确
if (file && file.type === 'application/vnd.ms-excel') {
const formData = new FormData();
formData.append('projectId', projectId);
formData.append('file', file);
try {
const response = await axios.post('https://example.com/upload', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
});
console.log('上传成功', response.data);
} catch (error) {
console.error('上传失败', error);
}
} else {
console.error('请选择 Excel 格式的文件');
}
}
}
}
</script>
```
在这个示例中,我们使用 `input` 标签来实现文件上传功能,用户选择文件后,我们通过 `refs` 来获取到文件输入框的引用,然后在 `change` 事件中调用 `uploadFile` 方法来上传文件。
在 `uploadFile` 方法中,我们首先获取到文件对象和 `projectId` 参数,然后使用 `FormData` 对象来构建表单数据,将 `projectId` 和文件对象都添加到表单中。然后,我们使用 `axios` 库来发送POST请求,同时在请求头中设置 `Content-Type` 为 `multipart/form-data`,以便服务器能够正确解析表单数据。
需要注意的是,我们在上传文件之前,先检查了文件格式是否为 `application/vnd.ms-excel`,即Excel格式。如果文件格式不正确,则会提示用户选择正确的文件。另外,示例中的上传地址 `https://example.com/upload` 仅作为示例,你需要将其替换为你的上传地址。