Axios提交带有文件的表单(ElementUI)

6 篇文章 0 订阅
4 篇文章 0 订阅

      <el-form :model="addForm" ref="addFormRef" label-width="75px">
        <el-form-item label="学校" prop="school">
          <el-select v-model="addForm.school" placeholder="请选择学校">
            <el-option v-for="item in schools" :key="item.id" :label="item.name" :value="item.id">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="奖项" prop="award">
          <el-select v-model="addForm.award" placeholder="请选择奖项" prop="award">
            <el-option v-for="item in awards" :key="item.id" :label="item.name" :value="item.id">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="奖励对象" prop="target">
          <el-input v-model="addForm.target"></el-input>
        </el-form-item>
        <el-form-item label="描述" prop="brief">
          <el-input v-model="addForm.brief"></el-input>
        </el-form-item>
        <el-form-item>
          <el-upload action="#" :http-request="handleFile" :on-success="handleSuccess" :multiple="false" :limit="1" :on-exceed="handleExceed">
            <el-button size="small" type="primary">点击上传</el-button>
            <div slot="tip" class="el-upload__tip">只能上传jpg/png文件</div>
          </el-upload>
        </el-form-item>
      </el-form>
要注意的有 :
1.action="#" 这个必须要有 也可以填action=""
2.:http-request="handleFile"是自定义文件上传的 如果你是直接post的话就不需要
我是通过handlerFile 把要上传的文件先储存好 然后等他输入完其他表单的信息按确定时再上传

    handleFile(param) {
      this.uploadFile = param.file;
      console.log(param);
    },
用这个储存好
提交代码

    async onSubmit() {
      let formData = new FormData();
      formData.append("school", this.addForm.school);
      formData.append("award", this.addForm.award);
      formData.append("target", this.addForm.target);
      formData.append("brief", this.addForm.brief);
      formData.append("file", this.uploadFile);
      const { data: res } = await this.$axios.post("/details", formData);
      if (res.status !== 200)
        return this.$message.error({ message: "上传信息失败" });
      this.$message({ message: "上传信息成功", type: "success" });
    }

Vue和Axios可以用于提交带有文件表单数据。以下是一个简单的示例: 首先,导入Vue和axios: ``` import Vue from 'vue'; import axios from 'axios'; ``` 然后,在Vue实例中创建一个方法用来处理表单提交: ``` methods: { submitForm() { // 创建一个 FormData 对象 let formData = new FormData(); // 获取文件输入框的文件 let file = this.$refs.fileInput.files[0]; // 将文件添加到 FormData 对象中 formData.append('file', file); // 使用 axios 发送 POST 请求,将 FormData 对象作为数据传递 axios.post('/api/submit', formData) .then(response => { // 处理成功的响应 console.log(response); }) .catch(error => { // 处理错误的响应 console.error(error); }); } } ``` 在上面的代码中,我们首先创建了一个FormData对象,然后通过获取文件输入框中的文件并将其添加到FormData对象中。接下来,使用axios的post方法发送POST请求,并将FormData对象作为数据传递。然后,根据返回的响应进行相关处理。 需要注意的是,上述代码中的`this.$refs.fileInput`表示引用了一个具有`ref="fileInput"`属性的文件输入框,可以通过该引用来获取文件。 最后,在HTML模板中添加一个表单,并调用submitForm方法来提交表单: ``` <form @submit="submitForm"> <input type="file" ref="fileInput" /> <button type="submit">提交</button> </form> ``` 在上述代码中,我们监听了表单的submit事件,并在事件发生时调用submitForm方法。 以上就是使用Vue和Axios提交带有文件表单数据的简单示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值