h5 simulates file drag and drop upload

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .contain{
    
    
            width: 300px;
            height: 300px;
            border: 1px solid black;
            text-align: center;
            line-height: 300px;
        }
        .fileList{
    
    
            display: flex;
        }
        .file{
    
    
            width: 100px;
            height: 100px;
            border: 1px solid blue;
            margin: 20px;
        }
    </style>
</head>
<body>
    <div class="contain">
         将图片放在此处
    </div>
    <div class="fileList">
    </div>
</body>
<script>
    const contain = document.querySelector('.contain')
    const fileList = document.querySelector('.fileList')
    contain.addEventListener('dragover',(e)=>{
    
    
        e.preventDefault()//阻止默认事件
    })

    contain.addEventListener('drop',(e)=>{
    
    
        e.preventDefault()// 阻止浏览器默认事件
        transformBase64(e.dataTransfer.files)
    })

    function transformBase64(files){
    
    
        Array.from(files).forEach(file=>{
    
    
            const fileReader = new FileReader()
            fileReader.readAsDataURL(file);//异步读取
            fileReader.onload= (res)=>{
    
    
                let base64 = res.target.result
                const imgDom = new Image();
                imgDom.src = base64
                imgDom.className = 'file'
                fileList.appendChild(imgDom)
                // fileList.innerHTML+=`<img src='${base64}' class="file">`
            }
        
        })

    }


</script>
</html>

Guess you like

Origin blog.csdn.net/weixin_45485922/article/details/124899945