开发者社区> 木头先生> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

使用readAsDataURL方法预览图片

简介: 使用FileReader接口的readAsDataURL方法实现图片的预览。  在FileReader出现之前,前端的图片预览是这样实现的:把本地图片上传到服务器,服务器把图片地址返回,并把它替换到图片元素的src属性。
+关注继续查看

    使用FileReader接口的readAsDataURL方法实现图片的预览。

 在FileReader出现之前,前端的图片预览是这样实现的:把本地图片上传到服务器,服务器把图片地址返回,并把它替换到图片元素的src属性。

   这种方法的缺点是:必须要先把图片上传到服务器。那么问题来了,如果上传的图片很大,而网速又很慢,这就需要等待很久预览图片才会显示出来了,而且,如果用户预览图片后发现不太满意,想重新选择一张图片,这时候还要把已经上传到服务器上的图片给删除掉。

自从有了HTML5的FileReader对象以后,预览图片变得简单多了,不再需要后台的配合,并且JS操作本地文件已经成为了可能。这种方法的思路是:通过FileReader.prototype.readAsDataURL()方法把图片文件转成base64编码,然后把base64编码替换到预览图片的src属性即可。如果想要了解更多关于FileReader对象的,可以看一下这里:FileReader https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader

 

下面是使用FileReader进行图片预览的简单demo:

<html> 

<head> 

<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">

<meta name="format-detection" content="telephone=no,email=no,adress=no">

<title>通过filereader接口读取文件</title> 

<script type="text/javascript"> 

var inputElement = document.querySelector('.head-portrait');

inputElement.addEventListener('change', readAsDataURL);

function readAsDataURL() { 

   //判断浏览器是否支持filereader

    if(typeof FileReader=='undifined') { 

        result.innerHTML="<p>抱歉,你的浏览器不支持 FileReader</p>"; 

        return false; 

    } 

var file= inputElement.files[0]; 

//判断获取的是否为图片文件

    if(!/image\/\w+/.test(file.type)) { 

        alert("请确保文件为图像文件"); 

        return false; 

    } 

    var reader=new FileReader(); 

    reader.readAsDataURL(file); 

reader.onload=function(e) { 

//result为base64数据

        var imgData = this.result;  

           imgShow.setAttribute('src', imgData); 

    }    

</script> 

</head> 

 <div>

<img class="imgshow"  />

<input type="file" class="head-portrait" accept="image/*" />

</div>

<body> 

</body> 

</html>  

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《Android App开发入门:使用Android Studio 2.X开发环境》——2-1 Android App 的主角:Activity
本节书摘来自华章计算机《Android App开发入门:使用Android Studio 2.X开发环境》一书中的第2章,第2-1节,作者 施威铭,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1215 0
GrokEVT – Read Windows NT/2K/XP/2K3 event logs
Windows event log files form a very important part of Windows system forensics.
498 0
Hadoop客户端Job提交流程
从源码层面,总结下Hadoop客户端提交作业的流程:   1. 选择使用分布式环境通信协议,还是本地调试通信协议      org.apache.hadoop.mapreduce.Job#connect   2. 上传作业代码jobjar, libjar等,从本地文件系统到HDFS中去。      
1344 0
[Hadoop]大量小文件问题及解决方案
1. HDFS上的小文件问题 小文件是指文件大小明显小于HDFS上块(block)大小(默认64MB)的文件。如果存储小文件,必定会有大量这样的小文件,否则你也不会使用Hadoop(If you’re storing small files, then you probably have lots of them (otherwise you wouldn’t turn to Hadoop)),这样的文件给hadoop的扩展性和性能带来严重问题。
741 0
github—如何在README.md文件中添加图片
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/80551021 1、在github上的仓库建立一个存放图片的文件夹,文件夹名字随意。
1832 0
[转载]Hyperledger超级账本推出认证服务供应商计划,以提高企業区块链部署速度和效率
Hyperledger超级账本推出认证服务供应商计划,以提高企業区块链部署速度和效率 。首批超级账本认证服务供应商包括埃森哲,蚂蚁金服,北京众享比特 ,Chainyard和IBM。
1282 0
#yyds干货盘点# 【React工作记录四十四】react中filter数组的使用
#yyds干货盘点# 【React工作记录四十四】react中filter数组的使用
0 0
实战:使用 React 实现渐进式加载图片
图片对网站有很大的影响。它们的存在改善了用户体验,提高了用户粘性。然而,加载高质量的图片需要时间,而且会让这种体验更令人沮丧,尤其是在网速较慢的情况下。 为了解决这个问题,开发人员需要部署支持积极加载体验的策略。其中一个策略是渐进式图像加载。
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载