elementUI多文件表单上传

使用中发现这个多文件上传,是分批的单文件上传
不用调用on-change

<el-form-item label="上传文件" :label-width="formLabelWidth">
      <el-upload ref="uploadDemo" action="/api/uploadWithForm" :on-change="addImg" :data="upData" :auto-upload="false" :file-list="fileList">
      <!-- <el-upload ref="uploadDemo" action="/api/mulUploadWithForm" :on-change="addImg" :data="upData" :auto-upload="false" :file-list="fileList"> -->
        <el-button size="small" type="primary" multiple>选择文件</el-button>
      </el-upload>
</el-form-item>
参数 说明 类型
data 上传时附带的额外参数 object
on-change 文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用 function(file, fileList)
auto-upload 是否在选取文件后立即进行上传 boolean
file-list 上传的文件列表, 例如: [{name: 'food.jpg', url: 'https://xxx.cdn.com/xxx.jpg'}] array

后端接口
一开始用这个,发现进不去循环,并且发现上传了几张图就会访问几次接口

 @RequestMapping(value = "mulUploadWithForm", method = RequestMethod.POST)
    public String mulUploadWithForm(MultipartFile[] files, User user){
        for (int i=0; i<files.length; i++) {
            MultipartFile multipartFile = files[i];
            try {
                multipartFile.transferTo(new File(filePath ));
            }catch (Exception e){
                e.printStackTrace();
                return "上传失败";
            }
        }
        return user.toString();
    }

然后改用这个接口

@RequestMapping(value = "uploadWithForm", method = RequestMethod.POST)
    public String mulUploadWithForm(MultipartFile file, User user){
            try {
                String filename = file.getOriginalFilename();
                file.transferTo(new File(filePath + filename));
            }catch (Exception e){
                e.printStackTrace();
                return "上传失败";
            }
        return user.toString();
    }

前端完整代码:

<template>
  <el-form ref="form" :model="form" label-width="80px">
    <el-form-item label="年龄" prop="age">
      <el-input v-model="form.age"></el-input>
    </el-form-item>
    <el-form-item label="姓名" prop="username">
      <el-input v-model="form.username"></el-input>
    </el-form-item>
    <el-form-item label="上传文件" :label-width="formLabelWidth">
      <el-upload ref="uploadDemo" action="/api/uploadWithForm" :on-change="addImg" :data="upData" :auto-upload="false" :file-list="fileList">
      <!-- <el-upload ref="uploadDemo" action="/api/mulUploadWithForm" :on-change="addImg" :data="upData" :auto-upload="false" :file-list="fileList"> -->
        <el-button size="small" type="primary" multiple>选择文件</el-button>
      </el-upload>
    </el-form-item>
    <el-form-item>
      <el-button type="primary" @click="onSubmit">上传表单</el-button>
      <el-button>取消</el-button>
    </el-form-item>
  </el-form>
</template>

<script>
export default {
  computed: {
    // 这里定义上传文件时携带的参数,即表单数据
    upData: function() {
      return this.form
    }
  },
  data() {
    return {
      formLabelWidth: '80px',
      form: {
        username: '',
        age: ''
      },
      fileList: []
    }
  },
  methods: {
    onSubmit() {
      this.$refs.uploadDemo.submit()
    },
    addImg(file, fileList) {
      console.log(this.fileList)
    }
  }
}
</script>

后端完整代码

@RestController
@CrossOrigin
public class MulUploadController {

    @Value("${filepath}")
    public String filePath;

    @RequestMapping(value = "mulUploadWithForm", method = RequestMethod.POST)
    public String mulUploadWithForm(MultipartFile[] files, User user){
        for (int i=0; i<files.length; i++) {
            MultipartFile multipartFile = files[i];
            try {
                multipartFile.transferTo(new File(filePath ));
            }catch (Exception e){
                e.printStackTrace();
                return "上传失败";
            }
        }
        return user.toString();
    }

    @RequestMapping(value = "uploadWithForm", method = RequestMethod.POST)
    public String mulUploadWithForm(MultipartFile file, User user){
            try {
                String filename = file.getOriginalFilename();
                file.transferTo(new File(filePath + filename));
            }catch (Exception e){
                e.printStackTrace();
                return "上传失败";
            }
        return user.toString();
    }
}
posted @ 2021-10-30 15:02  张三丰学Java  阅读(695)  评论(0编辑  收藏  举报