使用FileReader对象的readAsDataURL方法来读取图像文件

使用FileReader对象的readAsDataURL方法来读取图像文件readAsDataURL方法会使用base-64进行编码,编码的资料由data字串开始,后面跟随的是MIMEtype,然后再加上base64字串,逗号之后就是编码过的图像文件的内容。data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHQAAAB0CAYAAABUmhYnAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAA……使用

readAsDataURL方法会使用base-64进行编码,编码的资料由data字串开始,后面跟随的是MIME type,然后再加上base64字串,逗号之后就是编码过的图像文件的内容。

readAsDataURL获取的base64字符串如下:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHQAAAB0CAYAAABUmhYnAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAA......

使用Img显示图像文件

若想要将读取出来的图像文件,直接显示在网页上,您可以透过JavaScript建立一个标签,再设定src属性为Data URL,再将<img>标签加入DOM之中,
例如以下范例所示:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript">
        function ProcessFile(e) { 
   
            var file = document.getElementById('file').files[0];
            if (file) { 
   
                var reader = new FileReader();
                reader.onload = function (event) { 
   
                    var txt = event.target.result;

                    var img = document.createElement("img");
                    img.src = txt;//将图片base64字符串赋值给img的src
                    document.getElementById("result").appendChild(img);
                };
            }
            reader.readAsDataURL(file);
        }

        function contentLoaded() { 
   
            document.getElementById('file').addEventListener('change',
                ProcessFile, false);
        }

        window.addEventListener("DOMContentLoaded", contentLoaded, false);
    </script>
</head>
<body>
请选取一个图像文件: <input type="file" id="file" name="file"/>
<div id="result"></div>
</body>
</html>

参考:

使用FileReader对象的readAsDataURL方法来读取图像文件

FileReader用来把文件读入内存,并且读取文件中的数据。FileReader接口提供了一个异步API,使用该API可以在浏览器主线程中异步访问文件系统,读取文件中的数据。

FileReader 的 result 可以有 3 种形式, 它取决于具体调用读取的方法
调用 reader. readAsArrayBuffer, 则 result 为 ArrayBuffer 对象
调用 reader. readAsText, 则 result 为 字符串
调用reader. readAsDataURL, 则 result 为 DataURL, DataURL 可直接 赋值给 img.src
调试发现 DataURL 是带头信息(/image) 的 base64(可能是) 编码的字符串

FileReader接口的使用示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript">
    var result = document.getElementById("result");
    var file = document.getElementById("file");

    //判断浏览器是否支持FileReader接口
    if (typeof FileReader == 'undefined') { 
   
        result.InnerHTML = "<p>你的浏览器不支持FileReader接口!</p>";
        //使选择控件不可操作
        file.setAttribute("disabled", "disabled");
    }

    function readAsDataURL() { 
   
        //检验是否为图像文件
        var file = document.getElementById("file").files[0];
        if (!/image\/\w+/.test(file.type)) { 
   
            alert("看清楚,这个需要图片!");
            return false;
        }
        var reader = new FileReader();
        //将文件以Data URL形式读入页面
        reader.readAsDataURL(file);

        reader.onload = function (e) { 
   
            var result = document.getElementById("result");
            //显示文件
            result.innerHTML = '<img src="' + this.result + '" alt="" />';
        }
    }

    function readAsBinaryString() { 
   
        var file = document.getElementById("file").files[0];
        var reader = new FileReader();
        //将文件以二进制形式读入页面
        reader.readAsBinaryString(file);

        reader.onload = function (f) { 
   
            var result = document.getElementById("result");
            //显示文件
            result.innerHTML = this.result;
        }
    }

    function readAsText() { 
   
        var file = document.getElementById("file").files[0];
        var reader = new FileReader();
        //将文件以文本形式读入页面
        reader.readAsText(file);

        reader.onload = function (f) { 
   
            var result = document.getElementById("result");
            //显示文件
            result.innerHTML = this.result;
        }
    }
</script>
<p>
    <label>请选择一个文件:</label>
    <input type="file" id="file"/>
    <input type="button" value="读取图像" onclick="readAsDataURL()"/>
    <input type="button" value="读取二进制数据" onclick="readAsBinaryString()"/>
    <input type="button" value="读取文本文件" onclick="readAsText()"/>
</p>
<div id="result" name="result"></div>
</body>
</html>

参考:

HTML5学习之FileReader接口

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/209988.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • pdf转word思路和方法

    pdf转word思路和方法本篇只涉及pdf转word,整理的一些方法,当前有效,个人观点。一、右键直接用word打开适合小文件转换。二、转换软件很多可以将pdf转word的软件,比如AdobeAcrobat,ABBYYFineReader等等,还有一些国产转换软件,百度网盘好像也可以,大部分转换也有限制,需要money,想支持也行,当然也可以去一些论坛,网站或者博客找一些大神免费版的,可以去杂货间http://jsywmy.ys168.com/看看,里面有一些网站论坛博客有。三、转换网站1、alltoall2.

    2022年5月29日
  • 2019最新的手机号码正则表达式

    2019最新的手机号码正则表达式2019最新的手机号码正则表达式看着我的手机号码验证又被测试给踢了回来,没办法自己只能写一个备用了。参考博客:https://blog.csdn.net/u010085362/article/details/80347225直接贴出我的正则:((\+?86)|(\(\+86\)))?((((13[4]{1})|(14[5-9]{1})|147|(15[4]{1})|166|(17\…

    2022年6月6日
  • linux修改ftp目录_ftp切换目录命令

    linux修改ftp目录_ftp切换目录命令linuxFTP命令详解更新时间:2008年09月12日00:14:55作者:整理的比较全的linux下ftp命令详细说明FTP的命令行格式为:ftp-v-d-i-n-g[主机名],其中-v显示远程服务器的所有响应信息;-n限制ftp的自动登录,即不使用;.netrc文件;-d使用调试方式;-g取消全局文件名。ftp使用的内部命令如下(中括号表示可选项):1.![cmd[a…

    2022年9月21日
  • 进程间通信方式——消息队列

    进程间通信方式——消息队列与消息队列的三个数据结构;和消息队列相关的函数;消息队列的工作模式。

    2022年10月9日
  • @RequestParam注解使用

    @RequestParam注解使用1、作用:@RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)2、语法:语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)value:参数名required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报…

    2022年6月30日
  • 简单工厂和策略模式_21680002工厂模式

    简单工厂和策略模式_21680002工厂模式简单工厂加策略模式的应用

    2022年9月12日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号