Javascript图片上传前的本地预览实例

 更新时间:2014年06月16日 12:08:04   投稿:shichen2014  
图片的上传预览功能主要用于图片上传前的一个效果的预览,这篇文章主要介绍了Javascript图片上传前的本地预览实例,需要的朋友可以参考下

图片的上传预览功能主要用于图片上传前的一个效果的预览,目前主流的方法主要有js,jquery与flash实现,但我们一般都会使用js来实现图片上传预览功能,下面来看一个例子。

原理:

分为两步:当上传图片的input被触发并选择本地图片之后获取要上传的图片这个对象的URL(对象URL);把对象URL赋值给事先写好的img标签的src属性即可把图片显示出来。

在这里,我们需要了解Javascript里File对象、Blob对象和window.URL.createObjectURL()方法。

File对象:

File对象可以用来获取某个文件的信息,还可以用来读取这个文件的内容.通常情况下,File对象是来自用户在一个input元素上选择文件后返回的FileList对象,也可以是来自由拖放操作生成的 DataTransfer对象.
下面来看获取FileList对象:

复制代码 代码如下:

<script type="text/javascript" src="jquery.js"></script>
<input id="upload" type="file">
<img id="preview" src="">
<script type="text/javascript">
$('#upload').change(function(){
    // 获取FileList的第一个元素
    alert(document.getelementbyid('upload').files[0]);
});
</script>

Blob对象:

一个Blob对象就是一个包含有只读原始数据的类文件对象.Blob对象中的数据并不一定得是JavaScript中的原生形式.File接口基于Blob,继承了Blob的功能,并且扩展支持了用户计算机上的本地文件.
我们想要得到的对象URL实际上就是从Blob这个对象获取的,因为File的接口继承Blob。下面就来把Blob对象转换成URL:

复制代码 代码如下:

<script type="text/javascript">
var f = document.getelementbyid('upload').files[0];
var src = window.URL.createObjectURL(f);
document.getElementById('preview').src = src;
</script>

兼容性:

上述方法适用于chrome浏览器
如果是IE浏览器可以直接使用input的value来代替src
网上查看资料有直接使用File对象的getAsDataURL()方法获取URL的,现在这个方法都已经废除,类似的还有getAsText()和getAsBinary()方法,我们来看这样一个例子。

复制代码 代码如下:

function getFullPath(obj) {    //得到图片的完整路径 
    if (obj) { 
//ie 
if (window.navigator.userAgent.indexOf("MSIE") >= 1) { 
    obj.select(); 
    return document.selection.createRange().text; 

//firefox 
else if (window.navigator.userAgent.indexOf("Firefox") >= 1) { 
    if (obj.files) { 
return obj.files.item(0).getAsDataURL(); 
    } 
    return obj.value; 

return obj.value; 
    } 
}

这段代码是获取客户端图片的完整路径
我们再限制其大小和格式

复制代码 代码如下:

$("#loadFile").change(function () { 
var strSrc = $("#loadFile").val(); 
img = new Image(); 
img.src = getFullPath(strSrc); 
//验证上传文件格式是否正确 
var pos = strSrc.lastIndexOf("."); 
var lastname = strSrc.substring(pos, strSrc.length) 
if (lastname.toLowerCase() != ".jpg") { 
    alert("您上传的文件类型为" + lastname + ",图片必须为 JPG 类型"); 
    return false; 

//验证上传文件宽高比例 

if (img.height / img.width > 1.5 || img.height / img.width < 1.25) { 
    alert("您上传的图片比例超出范围,宽高比应介于1.25-1.5"); 
    return; 

//验证上传文件是否超出了大小 
if (img.fileSize / 1024 > 150) { 
    alert("您上传的文件大小超出了150K限制!"); 
    return false; 
}

其中,loadFile是html input file的id。在它的change事件,也就是选择了要上传的文件以后,让图片显示在图片框里吗,在上面代码的最后加上以下代码

复制代码 代码如下:

$("#stuPic").attr("src", getFullPath(this));

既然用到了jQuery,下面我们再分享一个用jQuery的写的代码实例:

复制代码 代码如下:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="jquery.js"></script>
<script language="javascript">
 $(function(){
        var ei = $("#large");
        ei.hide();
        $("#img1").mousemove(function(e){
                ei.css({top:e.pageY,left:e.pageX}).html('<img style="border:1px solid gray;" src="' + this.src + '" />').show();
        }).mouseout( function(){
                ei.hide("slow");
        })
        $("#f1").change(function(){
                $("#img1").attr("src","file:///"+$("#f1").val());
        })
 });
</script>
<style type="text/css">
        #large{position:absolute;display:none;z-index:999;}
</style>
</head>
<body>
<form name="form1" id="form1">
<div id="demo">
<input id="f1" name="f1" type="file" />
<img id="img1" width="60" height="60">
</div>
<div id="large"></div>
</form>
</body>
</html>

相关文章

  • JavaScript ES6中CLASS的使用详解

    JavaScript ES6中CLASS的使用详解

    class是es6引入的最重要特性之一。在没有class之前,我们只能通过原型链来模拟类。这篇文章我们将详细的介绍关于ES6中CLASS的使用,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-11-11
  • javascript基础练习之翻转字符串与回文

    javascript基础练习之翻转字符串与回文

    最近在学习的时候到了基础算法这一章节,让我对js内置对象方法的掌握还有思维逻辑都得到了提升,所借此机会来写一写学习心得和总结。下面这篇文章主要介绍了利用javascript实现翻转字符串与回文的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02
  • js open() 与showModalDialog()方法使用介绍

    js open() 与showModalDialog()方法使用介绍

    项目开发中经常要用到js open() 与showModalDialog()方法,下面有个不错的示例,喜欢的朋友可以研究下
    2013-09-09
  • Webpack中loader打包各种文件的方法实例

    Webpack中loader打包各种文件的方法实例

    这篇文章主要给大家介绍了关于Webpack中loader打包各种文件的相关资料,其中包括处理css文件、less文件、scss文件、url地址以及ES6高级语法的方法,需要的朋友可以参考下
    2019-09-09
  • JS去除右边逗号的简单方法

    JS去除右边逗号的简单方法

    这篇文章介绍了JS去除右边逗号的简单方法,有需要的朋友可以参考一下
    2013-07-07
  • JavaScript页面加载事件实例讲解

    JavaScript页面加载事件实例讲解

    在本篇文章中我们给大家通过实例讲解一下关于JavaScript页面加载事件的相关知识点内容,有需要的朋友们可以参考下。
    2019-09-09
  • JavaScript常用工具函数大全

    JavaScript常用工具函数大全

    这篇文章主要介绍了JavaScript常用工具函数,汇总整理了各种JavaScript常用工具函数,包括获取、判断、转换、设置等相关功能函数的定义与使用方法,需要的朋友可以参考下
    2020-05-05
  • js showModalDialog弹出窗口实例详解

    js showModalDialog弹出窗口实例详解

    本篇文章主要是对js showModalDialog弹出窗口进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • Cookies 和 Session的详解及区别

    Cookies 和 Session的详解及区别

    这篇文章主要介绍了Cookies 和 Session的详解及区别的相关资料,需要的朋友可以参考下
    2017-04-04
  • JS点击动态添加标签、删除指定标签的代码

    JS点击动态添加标签、删除指定标签的代码

    这篇文章主要介绍了JS点击动态添加标签、删除指定标签的代码,在文中给大家补充介绍了js 更加轮播图图片张数动态生成小圆点的方法,需要的朋友参考下实现代码
    2018-04-04

最新评论