vue异步上传表单(含文件)到http://127.0.0.1:8083/file/upload
时间: 2023-07-27 21:07:32 浏览: 99
vue实现文件上传功能
好的,具体实现流程如下:
1. 安装axios库:在终端中运行 `npm install axios --save`
2. 在Vue中引入axios库,在main.js文件中添加如下代码:
```javascript
import axios from 'axios'
Vue.prototype.$http = axios
```
3. 在Vue组件中定义一个方法来处理表单提交事件:
```javascript
methods: {
onSubmit() {
// 创建一个FormData对象,用于存储表单数据
let formData = new FormData()
// 添加需要上传的文件
formData.append('file', this.file)
// 添加其他表单数据
formData.append('name', this.name)
formData.append('age', this.age)
// 使用axios库发送post请求
this.$http.post('http://127.0.0.1:8083/file/upload', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
}).then(response => {
console.log(response.data)
}).catch(error => {
console.log(error)
})
}
}
```
在这个例子中,我们创建了一个FormData对象并添加了一个文件和其他表单数据,然后使用axios库的post方法将表单数据发送到服务器。
4. 在模板中添加表单元素和文件选择器:
```html
<template>
<div>
<form @submit.prevent="onSubmit">
<input type="text" v-model="name" placeholder="Name">
<input type="text" v-model="age" placeholder="Age">
<input type="file" @change="fileSelected">
<button type="submit">Submit</button>
</form>
</div>
</template>
```
5. 在Vue组件中定义一个方法来获取用户选择的文件:
```javascript
data() {
return {
file: null,
name: '',
age: ''
}
},
methods: {
fileSelected(event) {
this.file = event.target.files[0]
}
}
```
在这个例子中,我们使用了`@change`事件来获取用户选择的文件,并将它存储在Vue组件的data对象中的file属性中。
最后,记得在服务器端处理上传请求,把上传的文件保存到服务器中。
阅读全文