vue实现文件上传功能

vue 文件上传,供大家参考,具体内容如下

首先 先说一下想要实现的效果 

就如截图所见,需要将企业和需要上传的文件提交到后台处理,那么接下来就说如何实现

vue 实现 

vue 页面代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<el-upload

 class="upload-demo"

 ref="upload"

 action="doUpload"

 :limit="1"

 :file-list="fileList"

 :before-upload="beforeUpload">

 <el-button slot="trigger" size="small" type="primary">选取文件</el-button>

 <a href="./static/moban.xlsx" rel="external nofollow" download="模板"><el-button size="small" type="success">下载模板</el-button></a>

 <!-- <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button> -->

 <div slot="tip" class="el-upload__tip">只能上传excel文件,且不超过5MB</div>

 <div slot="tip" class="el-upload-list__item-name">{{fileName}}</div>

</el-upload>

<span slot="footer" class="dialog-footer">

 <el-button @click="visible = false">取消</el-button>

 <el-button type="primary" @click="submitUpload()">确定</el-button>

</span>

上传之前的大小校验

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

beforeUpload(file){

  debugger

  console.log(file,'文件');

  this.files = file;

  const extension = file.name.split('.')[1] === 'xls'

  const extension2 = file.name.split('.')[1] === 'xlsx'

  const isLt2M = file.size / 1024 / 1024 < 5

  if (!extension && !extension2) {

   this.$message.warning('上传模板只能是 xls、xlsx格式!')

   return

  }

  if (!isLt2M) {

   this.$message.warning('上传模板大小不能超过 5MB!')

   return

  }

  this.fileName = file.name;

  return false // 返回false不会自动上传

  },

手动上传确认提交

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

submitUpload() {

  debugger

  console.log('上传'+this.files.name)

  if(this.fileName == ""){

   this.$message.warning('请选择要上传的文件!')

   return false

  }

  let fileFormData = new FormData();

  fileFormData.append('file', this.files, this.fileName);//filename是键,file是值,就是要传的文件,test.zip是要传的文件名

  let requestConfig = {

   headers: {

   'Content-Type': 'multipart/form-data'

   },

  }

  this.$http.post(`/basedata/oesmembers/upload?companyId=`+this.company, fileFormData, requestConfig).then((res) => {

   debugger

   if (data && data.code === 0) {

   this.$message({

    message: '操作成功',

    type: 'success',

    duration: 1500,

    onClose: () => {

    this.visible = false

    this.$emit('refreshDataList')

    }

   })

   } else {

   this.$message.error(data.msg)

   }

  })

  }

后台

1

2

3

4

5

6

7

8

9

10

11

12

13

14

/**

  * 上传文件

  */

 @PostMapping("/upload")

 @RequiresPermissions("basedata:oesmembers:upload")

 public R upload(@RequestParam("file") MultipartFile file, @RequestParam("companyId") Integer companyId) {

  System.out.println(companyId);

  if (file.isEmpty()) {

   throw new RRException("上传文件不能为空");

  }

  //上传文件 相关逻辑

 

  return R.ok();

}

DEMO下载地址:https://dwz.cn/fgXtRtnu

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值