DIY文件上传(修改原始input:file)

本文介绍了如何使用Vue.js创建一个可定制样式的文件上传功能,包括隐藏的`<inputtype=file>`元素,点击按钮触发上传事件,以及文件格式和大小的验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

隐藏 input:file ,在页面创建 button 和 span 用于展示文件上传按钮和文件上传文本,在点击 button 时调用 input:file 的点击上传事件触发文件上传。

创建的 button 和 span 即可进行自定义样式

代码

<template>
  <div id="app">
    <input type="file" ref="inputfile" @change="fileChange" />
    <button @click="fileClick">选择上传文件</button>
    <span>{{ text }}</span>
  </div>
</template>

<script>
export default {
  data() {
    return {
      text: "请选择要上传的文件",
    };
  },
  methods: {
    // button 点击触发 input:file 点击
    fileClick() {
      this.$refs.inputfile.click();
    },
    // input:file 文件上传
    fileChange(res) {
      const file = res.target.files[0];  //  获取上传文件

      const fileType = ["jpg", "png"];  // 要求文件格式
      const fileSize = 2;  // 要求文件大小

      const { name } = file;
      const nameSplit = name.split(".");  // 获取上传文件后缀名
      const suffix = nameSplit[nameSplit.length - 1].toLocaleLowerCase();
      if (!fileType.includes(suffix)) {
        alert(`文件类型应为${fileType.join("、")}`);
        return;
      }

      const { size } = file;
      const isLimitSize = size / 1024 / 1024 < fileSize;  //  判断上传文件大小
      if (!isLimitSize) {
        alert(`文件大小应小于${fileSize}M`);
        return;
      }

      this.text = file.name;
      console.log("取得上传的文件", size / 1024 / 1024, file);
    },
  },
};
</script>

<style>
input {
  display: none;
}
button {
  width: 100px;
  height: 40px;
  border-radius: 10px;
  background: pink;
}
span {
  margin-left: 20px;
  font-style: italic;
  color: red;
}
</style>

效果图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值