vue+axios通过formdata提交参数和上传文件

  • Post category:other

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提交参数和上传文件的技巧。