input上传文件

207 阅读1分钟

轮子这么多为什么多此一举?

闲来无事,修改css样式的时候,看了几眼,以前对ele框架upload并未认真看过源码(ps :懒~)

DOM结构如下:

image.png 效果如下: image.png

  1. 第一眼看了好奇为啥input标签为隐藏状态,我猜不单单是为了样式吧,应该还有其他原因欢迎留言。
  2. 接下来详细介绍下自己开发的过程:主要实现代码结构展示、类型限制、大小限制等功能。 ①首先针对input标签进行隐藏; ②为上传按钮添加input标签点击事件; ③限制上传类型accetp,以逗号隔开; ④添加多选事件,multiple,默认未单选false;

image.png

上传

image.png

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Upload</title>
    <style>
      .file-upload {
        display: none;
      }
      button {
        border: 1px solid #dcdfe6;
        white-space: nowrap;
        cursor: pointer;
        padding: 5px 22px;
        font-size: 12px;
        border-radius: 3px;
        color: #fff;
        background-color: #409eff;
        border-color: #409eff;
        outline: none;
      }
    </style>
  </head>
  <body>
    <div>
      <input type="file" accept="image/*,.pdf" multiple='true' class="file-upload" />
      <button onclick="uploadFn()">上传</button>
      <button onclick="changeFile()">提交</button>
    </div>
    <script>
      const fileUpload = document.querySelector(".file-upload");
      function uploadFn() {
        fileUpload.click();
      }
      function changeFile(){
        const getSelectFile=fileUpload.files[0];
        if(getSelectFile){
        const formData=new FormData();
        formData.append('file',getSelectFile);
        }
      }
    </script>
  </body>
</html>