IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> element ui 同时提交表单数据和多张图片 -> 正文阅读

[JavaScript知识库]element ui 同时提交表单数据和多张图片

一、vue页面

<template>
  <div>
    <h1>统计</h1>

    <!--原生表单提交-->
    <form method="post" action="http://localhost:8082/file/up" enctype="multipart/form-data">
      文件 : <input type="file" name="file">
      <br />
      文件 : <input type="file" name="file">
      <br />
      姓名:<input type="text" name="name" />
      <br />
      年龄:<input type="number" name="age" />
      <input type="submit" value="上传">
    </form>
    <br />
    <br />

    <!--element ui表单提交-->
    <el-form :model="user" :rules="rules" ref="user" label-width="100px" label-position="right">
      <el-form-item label="姓名:" prop="name">
        <el-input v-model="user.name" placeholder="请输入姓名"></el-input>
      </el-form-item>
      <el-form-item label="年龄:" prop="age">
        <el-input type="number" v-model="user.age"></el-input>
      </el-form-item>
      <el-form-item>

        <el-upload class="upload-demo" action="" list-type="picture-card" ref="upload" :http-request="httpRequest"
          multiple :file-list="fileList" :auto-upload="false">
          <i class="el-icon-plus"></i>
        </el-upload>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="submit()">提交</el-button>
        <el-button @click="rest()">重置</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        user: {
          name: '',
          age: 0
        },
        rules: {
          name: [{
            required: true,
            message: '请输入名称',
            trigger: 'blur'
          }],
          age: [{
            required: true,
            message: '请输入年龄',
            trigger: 'blur'
          }]
        },
        fileList: [],
        formDate: new FormData(),
      }
    },
    methods: {
      submit() { //提交
        //上传类型
        let config = {
          headers: {
            'Content-Type': 'multipart/form-data'
          }
        };
        //表单校验
        this.$refs['user'].validate((valid) => {
          if (valid) {
            this.formDate.append('name', this.user.name);
            this.formDate.append('age', this.user.age);
            //获取图片
            this.$refs.upload.submit();
            //上传
            this.axios.post('http://localhost:8082/file/up', this.formDate, config).then((res) => {
              console.info('结果', res);
              this.formDate = new FormData();
            });
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },
      rest() { //重置
        this.$refs['user'].resetFields();
      },
      httpRequest(param) { //this.$refs.upload.submit()执行后会调用,多个图片会调用多次
        this.formDate.append('file', param.file);
      }
    }
  }
</script>
<style>
  .avatar-uploader .el-upload {
    border: 1px dashed #d9d9d9;
    border-radius: 6px;
    cursor: pointer;
    position: relative;
    overflow: hidden;
  }

  .avatar-uploader .el-upload:hover {
    border-color: #409EFF;
  }

  .avatar-uploader-icon {
    font-size: 28px;
    color: #8c939d;
    width: 178px;
    height: 178px;
    line-height: 178px;
    text-align: center;
  }

  .avatar {
    width: 178px;
    height: 178px;
    display: block;
  }
</style>

二、后端代码

package com.example.demo.controller;

import com.example.demo.pojo.User;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

/**
 * @Description: 文件上传
 * @Auther: cym
 * @Date: 2022/4/16
 * @Version: 1.0
 */
@CrossOrigin
@RequestMapping("file")
@RestController
public class FileUpController {

    @PostMapping("up")
    public void fileUp(@RequestParam(value = "file", required = false) MultipartFile[] files, User user) {
        System.out.println(user);
        for (MultipartFile file : files) {
            File f = new File("C:\\Users\\cym\\Desktop\\图片3.jpeg");
            try {
                file.transferTo(f);
            } catch (IOException e) {
                e.printStackTrace();
            }
            System.out.println("文件名称" + file.getOriginalFilename());
        }
    }
}


package com.example.demo.pojo;

/**
 * @Description: 用户
 * @Auther: cym
 * @Date: 2022/4/16
 * @Version: 1.0
 */
public class User {
    private String name;
    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

三、页面效果
在这里插入图片描述
后台打印
在这里插入图片描述

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 17:32:12  更:2022-04-18 17:33:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:49:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码