`
zzc1684
  • 浏览: 1189871 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

FileReader:读取本地图片文件并显示

阅读更多

 

 

要想在页面上显示本地图片,以前我们通常的做法是将选择的图片文件上传至后端服务器,后端对其进行存储,再将图片的URL返 回到前端,前端通过这个URL来显示图片。而HTML5的FileReader接口支持本地预览,FileReader接口主要是将文件读入内存,并提供 相应的方法,来读取文件中的数据,当然就能显示本地图片不需上传了。目前高级浏览器实现了FileReader接口,所以像IE6这些老东西直接滚粗。

在此之前,我们有文章:HTML5应用之文件拖拽上传,看完这篇文章后,你可以尝试制作一个拖拽和显示图片、编辑图片、最后上传的功能。

HTML

第一步创建html,我们在页面中放置一个文件选择的input#file_input和一个显示结果的div#result。

<p> 
   <label>请选择一个图像文件:</label> 
   <input type="file" id="file_input" /> 
</p>  
<div id="result"></div> 

Javascript

通过getElementById获取节点,判断浏览器的兼容性,对于不支持FileReader接口的浏览器将给出一个提示并禁用input,否则监听input的change事件。

var result = document.getElementById("result"); 
var input = document.getElementById("file_input"); 
 
if(typeof FileReader==='undefined'){ 
    result.innerHTML = "抱歉,你的浏览器不支持 FileReader"; 
    input.setAttribute('disabled','disabled'); 
}else{ 
    input.addEventListener('change',readFile,false); 
} 

然后,当file_input的change事件触发时,调用函数readFile()。在readFile中,我们首先获取file对象,然后通过file的type属性来检测文件类型,我们当然只允许选择图像类型的文件,然后我们new一个FileReader实例,并调用readAsDataURL方法来读取选中的图像文件,最后在onload事件中,获取到成功读取的文件内容,并以插入一个img节点的方式显示选中的图片。

function readFile(){ 
    var file = this.files[0]; 
    if(!/image\/\w+/.test(file.type)){ 
        alert("文件必须为图片!"); 
        return false; 
    } 
    var reader = new FileReader(); 
    reader.readAsDataURL(file); 
    reader.onload = function(e){ 
        result.innerHTML = '<img src="'+this.result+'" alt=""/>' 
    } 
} 

怎么样,可以看来我们并没有和后台交互就能将本地图片显示在页面中,最后我们来了解下FileReader的方法和事件。

FileReader的方法和事件

参数/事件 描述
方法
abort 中断读取
readAsText(file, [encoding]) 将文件读取为文本
该方法有两个参数,其中第二个参数是文本的编码方式,默认值为 UTF-8。这个方法非常容易理解,将文件以文本方式读取,读取的结果即是这个文本文件中的内容。
readAsBinaryString(file) 将文件读取二进制码
通常我们将它传送到后端,后端可以通过这段字符串存储文件
readAsDataURL(file) 将文件读取为DataURL
将文件读取为一串Data URL字符串,将小文件以一种特殊格式的URL地址直接读入页面。小文件指图像与html等格式的文件。
事件
onabort 数据读取中断时触发
onerror 数据读取出错时触发
onloadstart 数据读取开始时触发
onload 数据读取成功完成时触发
onloadend 数据读取完成时触发,无论成功失败
声明:本文为原创文章,helloweba.com和作者拥有版权,如需转载,请注明来源于helloweba.com并保留原文链接:http://www.helloweba.com/view-blog-224.html

 

分享到:
评论

相关推荐

    filereader:filereader,一个用于读取本地文件的 jQuery 扩展

    文件阅读器filereader,一个用于读取本地文件的 jQuery 扩展这组实用程序允许我们直接从 jQuery 访问 HTML5 FileReader API。 可用功能: $.canReadFiles() 如果当前浏览器实现了 FileReader API,则返回 true $....

    Html读取本地文件夹下图片并显示的示例代码

    在Html上选择本地文件夹,自动读取文件夹及子文件夹下的所有图片并显示在页面。 技术分析: 存在问题 Html中file标签获取到的路径时相对的。 Html中Img指定源时需要的是绝对路径。 解决方法: 调用Web API接口...

    WEB解析本地文件

    testfile.txt文件: 本地文件,即要被操作的文件。 jquery.js文件; jquery代码运行需要的js文件. interaction.html文件: 人机交互方式实现,WEB操作本地文件; h5文件操作API,FileReader()方式实现,传入...

    Leaflet.FileLayer, 使用HTML5文件API将文件本地( GeoJSON,KML,GPX ) 加载为层.zip

    Leaflet.FileLayer, 使用HTML5文件API将文件本地( GeoJSON,KML,GPX ) 加载为层 Leaflet.FileLayer使用 ...简单的地图控件用户可以在本地浏览文件它被本地读取( FileReader ) 并转换为 GeoJSON最终作为一个层加载 !

    基于JavaScript FileReader上传图片显示本地链接

    使用FileReader对象,web应用程序可以异步的读取存储在用户计算机上的文件(或者原始数据缓冲)内容,可以使用File对象或者Blob对象来指定所要处理的文件或数据.其中File对象可以是来自用户在一个&lt;input type=”text...

    JS+HTML5 FileReader实现文件上传前本地预览功能

    HTML5定义了FileReader作为文件API的重要成员用于读取文件,根据W3C的定义,FileReader接口提供了读取文件的方法和包含读取结果的事件模型。 FileReader的使用方式非常简单,可以按照如下步骤创建FileReader对象并...

    JS中利用FileReader实现上传图片前本地预览功能

    FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据。下面通过本文给大家介绍JS中利用FileReader实现上传图片前本地预览...

    JS 读取Excel文件(xls) 兼容Chrome/IE/Firefox

    JS 读取Excel文件(xls) 兼容Chrome/IE/Firefox 文章配套工具

    JavaScript 直接操作本地文件的实现代码

    该API引入了一个FileReader 对象,可以异步加载本地文件系统中的文件,并允许开发者为诸如加载失败,进度,加载完成等事件分配回调函数,它提供的方法可以从本地文件中读取文本或二进制数据,并通过一个 abort 方法...

    HTML5 FileReader对象的具体使用方法

    FileReader主要用于将文件内容读入内存,通过一系列异步接口,可以在主线程中访问本地文件。 使用FileReader对象,web应用程序可以异步的读取存储在用户计算机上的文件(或者原始数据缓冲)内容,可以使用File对象或者...

    mobileUpLoadImage:移动端图片上传并处理

    这种方式上传的图片没有经过压缩,上传时间比较长且有可能失败)直接通过某些兼容移动端的插件进行上传通过URL.createObjectURL的方式读取图片并处理后上传base64格式的数据(兼容性)通过FileReader的方式读取并...

    nodejs 图片预览和上传的示例代码

    FileReader对象允许web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用文件或Blob对象来指定要读取的文件或数据。 readAsDataURL方法用于读取指定的Blob或文件的内容。当读取操作完成后,...

    geotiff.js:geotiff.js是一个小型库,用于解析TIFF文件以进行可视化或分析。 它用纯JavaScript编写,可在浏览器和node.js应用程序中使用

    从文件系统(在使用FileReader浏览器上,以及在使用文件系统功能的节点上) 解析所有可能的TIFF文件的标头 地理空间元数据的基础提取 从以下位置读取栅格数据: 剥离的图像 平铺图像 波段交错图像 像素交错图像 ...

    h5页面调用相机、相册、录像、录音

    移动端浏览器和手机APP,h5页面调用相机、相册、录像、录音,可以选择本地相册;以及文件的读取和加载方法, 调用FileReader对象的方法

    H5移动端图片压缩上传开发流程

    H5活动已十分普遍,其中一种形式是让用户上传图片进行参与。移动端上传图片,用户一般都是上传手机相册中的...使用FileReader对象,web应用程序可以异步的读取存储在用户计算机上的文件(或者原始数据缓冲)内容,可以使用F

    从Stream内存流中播放MP3

    正常使用WindowsMediaPlayer控件的URL属性可以很方便播放音视频,但是这种方式的URL必须是一个本地文件,但是有些特殊应用中,对音视频文件加密保护,且要求只能播放,但不能拷贝,即使拷贝了也是无法播放的文件...

    HTML5移动开发图片压缩上传功能

    H5活动已十分普遍,其中一种形式是让用户上传图片进行参与。移动端上传图片,用户一般都是上传手机相册中的...使用FileReader对象,web应用程序可以异步的读取存储在用户计算机上的文件(或者原始数据缓冲)内容,可以使用F

    JavaScript+html5 canvas实现本地截图教程

    最近有时间了解了下html5的各API,发现新浪微博的头像设置是使用canvas实现截图的,加之前段时间了解了下... 一、获取文件,读取文件并生成url 二、根据容器的大小使用canvas绘制图片 三、使用canvas绘制遮罩层

    Java之IO流学习总结

    ByteArrayInputStream、StringBufferInputStream、FileInputStream 是三种基本的介质流,它们分别从Byte 数组、StringBuffer、和本地文件中读取数据。PipedInputStream 是从与其它线程共用的管道中读取数据,与Piped...

    从入门到精通HTML5——PDF——网盘链接

     15.2 使用FileReader接口读取文件 285  15.2.1 检测浏览器是否支持FileReader接口 285  15.2.2 FileReader接口的方法 285  15.2.3 使用readAsDataURL方法预览图片 286  15.2.4 使用readAsText方法读取文本...

Global site tag (gtag.js) - Google Analytics