label+input自定义文件上传功能

本文介绍了如何实现一个简单的文件上传和已选文件删除功能。通过使用label标签配合隐藏的input[type='file']元素,点击label内容触发文件选择。当需要删除已选文件时,只需将input值设为null。该方法适用于需要简洁上传功能的场景。

文件上传与已选择文件删除功能实现

前言:有些时候只需要在点击一个按钮、一段文字或者一个小图标就能实现简单的文件上传的功能,而使用封装组件中的上传模块需要做很多方面的修改,使用起来有些得不偿失,这个时候自己动手做一个简单的上传功能就是一个非常明智的选择了。下面是本次功能的简单实现过程:

思路: 使用label标签的标记input(type为"file"),同时将input进行隐藏;点击label中的内容时触发input的文件选择,当需要删除已选择的文件时,在将input值改成null即可,实现如下:

html代码:

  <label for="inputFile" class="uploadFileClass">
  	选择文件
  </label>
  <input type="file" id="inputFile" style="display: none;" accept=".csv" @change="fileUploadFunc" ref="inputFile">
  <span class="uploadTileClass">{{fileName}}</span>
  <span v-if="fileName != '-'" class="delFileClass" @click="clearFileFunc">
 	<i class="el-icon-circle-close"></i>
  </span>

js代码:

// 文件上传
fileUploadFunc (event) {
   this.form.uploadFile = event.target.files[0];
   if (this.form.uploadFile.size > 10*1024){
     this.$message.warning('文件大小不能超过10M!')
     // 清空文件
     this.$refs.inputFile.value = null
     return
   }
   if(this.form.uploadFile && this.form.uploadFile.name) {
     this.fileName = this.form.uploadFile.name
   }
 },
 // 删除已选择文件
 clearFileFunc () {
   this.fileName = '-'
   this.$refs.inputFile.value = null
   // 也可以使用如下DOM操作清空input的value值
   // document.getElementById("inputFile").value = null
 },

实现效果:

在这里插入图片描述

The end ~

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值