vue,Vuetify,SpringBoot 实现多文件上传

前端:vue+Vuetify

HelloWorld.vue

<template>
  <v-container fluid>
    <v-form ref="uploadFileForm" v-model="uploadFormValid">
      <v-row>
        <v-col cols="3">
          文件:
        </v-col>
        <v-col>
          <v-file-input v-model="fileInfo" @change="uploadFile" multiple show-size counter small-chips
            :rules="[v => !!v || '文件必选']" label="File input" accept="image/*" prepend-icon="mdi-file"></v-file-input>
        </v-col>
      </v-row>
      <v-row>
        <v-col cols="3">
          文本:
        </v-col>
        <v-col>
          <v-select v-model="select" :hint="`${select.state}, ${select.abbr}`" :items="items" item-text="state"
            item-value="abbr" label="Select" persistent-hint return-object single-line></v-select>
        </v-col>
      </v-row>
    </v-form>
  </v-container>
</template>
<script>
  import axios from 'axios'
  export default {
    name: 'HelloWorld',
    data() {
      return {
        select: {
          state: 'Florida',
          abbr: 'FL'
        },
        items: [{
            state: 'Florida',
            abbr: 'FL'
          },
          {
            state: 'Georgia',
            abbr: 'GA'
          },
          {
            state: 'Nebraska',
            abbr: 'NE'
          },
          {
            state: 'California',
            abbr: 'CA'
          },
          {
            state: 'New York',
            abbr: 'NY'
          },
        ],
        fileInfo: null,
        uploadFormValid: null,
        textInfo: "123123"
      }
    },
    methods: {
      // 上传文件方法
      uploadFile() {
        console.log(this.fileInfo, '文件信息');
        if (this.$refs.uploadFileForm.validate()) {
          var formData = new window.FormData();
          let files = Array.from(this.fileInfo);
          files.forEach((file) => {
            formData.append("file", file);
          });
          formData.append('textInfo', "123");
          axios.post("http://localhost:8080/helloWorld/method02", formData, {
            headers: {
              "Content-Type": "multipart/form-data"
            }
          });
        }
      }
    }
  }
</script>

 前端效果:

后台Springboot 接口控制器

    @ResponseBody
    @PostMapping("/method02")
    public String method02(ReqFileData reqFileData) {
        if (null != reqFileData) {
            try {
                MultipartFile[] files = reqFileData.getFile();
                if (null != files) {
                    for (MultipartFile file : files) {
                        File f = new File("F:\\upload\\" + file.getOriginalFilename());
                        //创建父目录
                        if (!f.getParentFile().exists()) {
                            f.getParentFile().mkdir();
                        }
                        file.transferTo(f);
                    }
                }else {
                    return "fail";
                }
            } catch (IOException e) {
                return "fail";
                //e.printStackTrace();
            }
            String textInfo = reqFileData.getTextInfo();
        }
        return "ok";
    }

 

import org.springframework.web.multipart.MultipartFile;

/**
 * 数据接收实体类
 */
public class ReqFileData {

    private MultipartFile[] file;
    private String textInfo;

    public MultipartFile[] getFile() {
        return file;
    }

    public void setFile(MultipartFile[] file) {
        this.file = file;
    }

    public String getTextInfo() {
        return textInfo;
    }

    public void setTextInfo(String textInfo) {
        this.textInfo = textInfo;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值