Vue+Axios通过FormData提交参数和上传文件
简介
在Vue项目中,我们经常需要通过Ajax请求向后端提交参数和上传文件。本攻略将介绍如何使用Axios和FormData来实现这一功能。
安装和配置
首先需要安装Axios和Vue-Axios:
npm install axios vue-axios --save
然后在Vue项目中引入Axios和Vue-Axios:
import Vue from 'vue'
import axios from 'axios'
import VueAxios from 'vue-axios'
Vue.use(VueAxios, axios)
提交参数
可以使用FormData来提交参数,以下是一个简单的示例:
const formData = new FormData()
formData.append('name', '张三')
formData.append('age', 18)
.axios.post('/api/user', formData)
.then(response => {
console.log(response.data)
})
.catch(error => {
console.log(error)
})
在上述代码中,FormData
表示一个表单数据对象,formData.append('name', '张三')
表示向表单数据对象中添加一个名为name
,值为张三
的参数,this.axios.post('/api/user', formData)
表示使用Axios发送一个POST请求,将表单数据对象为参数传递给后端。
上传文件
可以使用FormData来上传文件,以下是一个简单的示例:
<template>
<div>
<input type="file" ref="fileInput" @change="uploadFile">
</div>
</template>
<script>
export default {
methods: {
uploadFile() {
const formData = new FormData()
formData.append('file', this.$refs.fileInput.files[0])
this.axios.post('/api/upload', formData)
.then(response => {
console.log(response.data)
})
.catch(error => {
console.log(error)
})
}
}
}
</script>
在上述代码中,<input type="file" ref="fileInput" @change="uploadFile">
表示一个文件上传控件,.$refs.fileInput.files[0]
表示获取上传文件的第一个文件对象,formData.append('file', this.$refs.fileInput.files[0])
表示将文件对象添加到表单数据对象中,thisaxios.post('/api/upload', formData)
表示使用Axios发送一个POST请求,将表单数据对象作为参数传递给后端。
示例1:使用FormData提交参数
<template>
<div>
<input type="text" v-model="name">
<input type="number" v-model="age">
<button @click="submit">提交</button>
</div>
</template>
<script>
export default {
data() {
return {
name: '',
age: ''
}
},
methods: {
submit() {
const formData = new FormData()
formData.append('name', this.name)
formData.append('age', this.age)
this.axios.post('/api/user', formData)
.then(response => {
console.log(response.data)
})
.catch(error => {
console.log(error)
})
}
}
}
</script>
在上述代码中,我们使用FormData来提交表单数据。
示例2:使用FormData上传文件
<template>
<div>
<input type="file" ref="fileInput" @change="uploadFile">
</div>
</template>
<script>
export default {
methods: {
uploadFile() {
const formData = new FormData()
formData.append('file', this.$refs.fileInput.files[0])
this.axios.post('/api/upload', formData)
.then(response => {
console.log(response.data)
})
.catch(error => {
console.log(error)
})
}
}
}
</script>
在上述代码中,我们使用FormData来上传文件。
总结
使用Axios和FormData可以方便地提交参数和上传。在本攻略中,我们介绍了如何安装和配置Axios和Vue-Axios,以及如何使用FormData来提交参数和上传文件。通过学习本攻略,相信你已经掌握了Vue+Axios通过FormData提交参数和上传文件的技巧。