• file Input文件选择框,选择图片后展示在占位区


    隐藏input,使用div可以自定义点击按钮的样式,在div的click事件中出发文件选择input的click事件选择文件,然后在input的change事件中拿到e.target.files[0],是File对象,其中file.name就是文件名,然后使用FileReader.readAsDataURL(File|Blob),在其onload事件中通过reader.result获取到dataUrl

    <input type="file" name="" accpet="image/*" id="file" class="hide" />
    <div class="add-btn" id="add-btn">+div>
    <img id="img" src="" alt="" class="img-placeholrder" />
    <script>
          const btnDom = document.getElementById("btn");
          const fileDom = document.getElementById("file");
          const addBtnDom = document.getElementById("add-btn");
          const filenameDom = document.querySelector("#filename");
          const imgDom = document.querySelector("#img");
          let file = null;
    
    	// 文件选择后
          fileDom.addEventListener("change", onFileChange);
    
          addBtnDom.addEventListener("click", () => {
            fileDom.click();
          });
          btnDom.addEventListener("click", () => {
            download(file);
          });
    
          async function onFileChange(e) {
            console.log(e.target.files);
            filenameDom.innerHTML = e.target.files[0].name;
            // 获取到文件对象file
            file = e.target.files[0];
    
            const url = await fileToDataUrl(file);
            imgDom.src = url;
          }
    
    	  // 将file对象转成DataURL,DataURL可以作为img.src的值
          function fileToDataUrl(file) {
            return new Promise(resolve => {
              const reader = new FileReader();
    
              reader.readAsDataURL(file);
              reader.onload = function () {
                resolve(reader.result);
              };
            });
          }
    
    	// 通过file对象(Blob对象)所选择的文件
          function download(file) {
          	// 创建objectURL
            const url = URL.createObjectURL(file);
    
    		// 创建a标签,设置download(文件名),设置a.href=objectURl,调用a.click()
            const a = document.createElement("a");
    
            a.download = file.name;
            a.href = url;
    
            a.click();
    
            URL.revokeObjectURL(url);
          }
        script>
    
    • 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
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
  • 相关阅读:
    python读取Excel指定范围并转为数组
    游戏AI——GOAP技术要点
    【C++】---STL之list的模拟实现
    超全整理,Pytest自动化测试框架-多进程(pytest-xdist)运行总结...
    自动化测试的度量指标
    java计算机毕业设计考试编排管理系统MyBatis+系统+LW文档+源码+调试部署
    1-EleasticSearch高可用集群核心原理
    Baidu && 搜狐面经
    VNC远程连接无法打开图形界面应用问题
    CANFD数据记录仪在汽车电子上的具体应用
  • 原文地址:https://blog.csdn.net/qq_42372534/article/details/127437409