前端原生input file自定义样式 去除文件内容、并限制上传文件格式以及大小

要自定义前端原生 <input type="file"> 样式并实现文件内容的清除,以及限制上传文件的格式和大小,你可以使用以下方法:

1. 自定义样式:

使用 CSS 样式来美化 <input type="file"> 元素,通常通过隐藏默认样式,然后创建一个自定义的按钮或样式来替代。

HTML:

<div class="file-upload">
  <label for="file-input" class="custom-file-upload">
    Select File
  </label>
  <input id="file-input" type="file">
</div>
<button id="clear-button">Clear File</button>

CSS:

.file-upload {
  position: relative;
  display: inline-block;
}

.custom-file-upload {
  cursor: pointer;
  padding: 10px 20px;
  background-color: #e0e0e0;
  color: #333;
  border: 1px solid #ccc;
}

#file-input {
  position: absolute;
  left: -9999px;
}

#clear-button {
  margin-top: 10px;
}

2. 清除文件内容:

为了清除文件内容,你可以通过监听 “Clear” 按钮的点击事件,然后将文件输入框的值设置为空。

JavaScript:

const clearButton = document.getElementById('clear-button');
const fileInput = document.getElementById('file-input');

clearButton.addEventListener('click', () => {
  fileInput.value = ''; // 清空文件输入框的值
});

3. 限制文件格式和大小:

使用 JavaScript,你可以在文件选择时验证文件的类型和大小,并根据需要给出错误提示或阻止上传。

JavaScript:

fileInput.addEventListener('change', () => {
  const file = fileInput.files[0];
  const allowedExtensions = ['.jpg', '.jpeg', '.png']; // 允许的文件扩展名
  const maxFileSize = 5 * 1024 * 1024; // 最大文件大小(以字节为单位)

  if (file) {
    const fileName = file.name;
    const fileSize = file.size;

    // 验证文件扩展名
    const fileExtension = fileName.substring(fileName.lastIndexOf('.')).toLowerCase();
    if (!allowedExtensions.includes(fileExtension)) {
      alert('Invalid file format. Please upload a JPG, JPEG, or PNG file.');
      fileInput.value = ''; // 清空文件输入框的值
      return;
    }

    // 验证文件大小
    if (fileSize > maxFileSize) {
      alert('File size exceeds the limit of 5MB.');
      fileInput.value = ''; // 清空文件输入框的值
      return;
    }

    // 文件验证通过,可以进行上传操作
    // ...
  }
});

这样,你就可以自定义 <input type="file"> 的样式,并实现清除文件内容的功能,同时限制上传文件的格式和大小。记得根据你的需求修改允许的文件扩展名和最大文件大小的值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曲江涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值