HTML input 选择文件转成base64编码

在html中,input标签type=file选择文件,转成base64编码,附上demo:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
        <title></title>
    </head>

    <body>
        <input type="file" class="uploading" name="file" id="uploadimg" accept="image/jpg,image/jpeg,image/gif,image/png">
        <div style="width: 300px;height: 200px;text-align: center;">
            <img id="img" style="max-width: 300px;max-height: 200px;"/>
        </div>
    </body>

    <script src="js/jquery-3.1.1.min.js"></script>
    <script>
        function _addImgFileListener(obj, fun) {
            $(obj).change(function() {
                try {
                    var file = this.files[0];
                    var reader = new FileReader();
                    reader.onload = function() {
                        var img = new Image();
                        img.src = reader.result;
                        img.onload = function() {
                            var w = img.width,
                                h = img.height;
                            var canvas = document.createElement('canvas');
                            var ctx = canvas.getContext('2d');
                            $(canvas).attr({
                                width: w,
                                height: h
                            });
                            ctx.drawImage(img, 0, 0, w, h);
                            var base64 = canvas.toDataURL('image/jpeg', 0.5);
                            var result = {
                                url: window.URL.createObjectURL(file),
                                base64: base64,
                                clearBase64: base64.substr(base64.indexOf(',') + 1),
                                suffix: base64.substring(base64.indexOf('/') + 1, base64.indexOf(';')),
                            };
                            fun(result);
                        }
                    }
                    reader.readAsDataURL(this.files[0]);
                } catch(e) {
                    _showMsg(e);
                }
            });
        }
        $(document).ready(function() {
            _addImgFileListener("#uploadimg", function(data) {
                //你的业务
                console.log(data.base64)
                $("#img").attr("src",data.base64);
            });
        })
    </script>

</html>

原文转自:https://www.waitig.com/html-input-%E9%80%89%E6%8B%A9%E6%96%87%E4%BB%B6%E8%BD%AC%E6%88%90base64%E7%BC%96%E7%A0%81.html

猜你喜欢

转载自blog.csdn.net/qq_37049050/article/details/81412676