• JS原生上传文件,读取文件格式,控制文件只可以上传某些格式,并使用fileReader转换格式


    本文为代码片段记录,方便后期使用哇!

    <!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>
            .myitem-one-list {
                 500px;
    
            }
    
            .ng-star-inserted {
                text-align: center;
            }
    
            .fileinput-button {
                position: relative;
                /* // display: inline-block; */
                overflow: hidden;
                cursor: pointer;
            }
    
            .fileinput-button input {
                position: absolute;
                right: 0px;
                top: -20px;
                opacity: 0;
                -ms-filter: 'alpha(opacity=0)';
                font-size: 50px;
            }
        </style>
    </head>
    
    <body>
        <div style="padding:20px;display:flex">
            <div style="text-align: center;display:inline-block;overflow: hidden;">
                <span class=" fileinput-button">
                    <span  style="display:inline-block;line-height: 30px">点击上传文件</span>
                    <input type="file" onChange="readExcel()" id="myfile01" />
                </span>
            </div>
        </div>
    
        <div>
        </div>
    
        <script>
    
            function readExcel() {
                let files = document.getElementById('myfile01').files
                console.log(files);
                if (files.length <= 0) {//如果没有文件名
                    return false;
                } else if (!/\.(xls|xlsx|jpg)$/.test(files[0].name.toLowerCase()) || errorFileSize(files[0], '1MB')) {
                    console.log('上传格式不正确,请上传xls或者xlsx、jpg格式,且文件大小不得超过1mb');
                    return false;
                }
                const fileReader = new FileReader();
                fileReader.onload = (ev) => {
                    try {
                        const data = ev.target.result;
                        console.log(data)
                        // 这里可以写其他操作啦
                    } catch (e) {
                        console.log('出错了')
                        return false;
                    }
                };
                fileReader.readAsDataURL(files[0]);
                // readAsArrayBuffer(file): void 异步按字节读取文件内容,结果用ArrayBuffer对象表示
                // readAsBinaryString(file): void 异步按字节读取文件内容,结果为文件的二进制串
                // readAsDataURL(file): void 异步读取文件内容,结果用data: url的字符串形式表示
                // readAsText(file, encoding): void 异步按字符读取文件内容,结果用字符串形式表示
            }
            /**
            * 限制文件大小,返回 true代表文件格式有误
            * @param {File} file 文件
            * @param {String} limitSize 限制大小
            * 使用方法:limitFileSize(files[0], '1MB')
            */
            function errorFileSize(file, limitSize) {
                var arr = ["KB", "MB", "GB"]
                var limit = limitSize.toUpperCase();
                var limitNum = 0;
                for (var i = 0; i < arr.length; i++) {
                    var leval = limit.indexOf(arr[i]);
                    if (leval > -1) {
                        limitNum = parseInt(limit.substr(0, leval)) * Math.pow(1024, (i + 1))
                        break
                    }
                }
                if (file.size > limitNum) {
                    return true
                }
                return false
            }
    
        </script>
    </body>
    
    </html>
    
  • 相关阅读:
    shell特殊符号cut命令 sort_wc_uniq命令 tee_tr_split命令 shell特殊符号
    管道符和作业控制 shell变量 环境变量配置文件
    8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向 
    yum更换国内源 yum下载rpm包 源码包安装
    mysql Communication link failure, message from server: "Can't get hostname for your address"
    7.1 安装软件包的三种方法 7.2 rpm包介绍 7.3 rpm工具用法 7.4 yum工具用法 7.5 yum搭建本地仓库
    java 对象数组
    zip压缩工具 tar打包 打包并压缩
    java链接mysql 中文乱码
    压缩打包介绍/gzip压缩工具/bzip2压缩工具/xz压缩工具
  • 原文地址:https://www.cnblogs.com/sugartang/p/15527659.html
Copyright © 2020-2023  润新知