js前端实现多图图片上传预览的两个方法(推荐)


Posted in Javascript onNovember 18, 2016

一、将图片转成icon码的实现方式

html代码:

<div class="yanzRight">
	<input style="margin-top:5px;float: left;" id="st18" name="evidence" onchange="previewImage(this,5)" type="file"/>
	<span class="dui" id="imgOrder_dui" style="display: none;"></span>
</div>
	<div id="preview5" style="margin-left:150px;clear:both; padding-top:15px;">
	<img src="" alt="" id="imghead5" height="200" width="200" style="display:none;"/>
</div>

js代码

//图片预览功能
function previewImage(file,imgNum)
{
 var MAXWIDTH = 200; 
 var MAXHEIGHT = 200;
 var div = document.getElementById('preview'+imgNum);
 if (file.files && file.files[0])
 {
  div.innerHTML ='<img id=imghead'+imgNum+'>';
  var img = document.getElementById('imghead'+imgNum+'');
  img.onload = function(){
  var rect = clacImgZoomParam(MAXWIDTH, MAXHEIGHT, img.offsetWidth, img.offsetHeight);
  img.width = rect.width;
  img.height = rect.height;
//   img.style.marginLeft = rect.left+'px';
  img.style.marginTop = rect.top+'px';
  }
  var reader = new FileReader();
  reader.onload = function(evt){img.src = evt.target.result;}
  reader.readAsDataURL(file.files[0]);
 }
 else //
 {
 var sFilter='filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src="';
 file.select();
 var src = document.selection.createRange().text;
 div.innerHTML = '<img id=imghead'+imgNum+'>';
 var img = document.getElementById('imghead2');
 img.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = src;
 var rect = clacImgZoomParam(MAXWIDTH, MAXHEIGHT, img.offsetWidth, img.offsetHeight);
 status =('rect:'+rect.top+','+rect.left+','+rect.width+','+rect.height);
 div.innerHTML = "<div id=divhead"+imgNum+" style='width:"+rect.width+"px;height:"+rect.height+"px;margin-top:"+rect.top+"px;"+sFilter+src+"\"'></div>";
 }
}
function clacImgZoomParam( maxWidth, maxHeight, width, height ){
 var param = {top:0, left:0, width:width, height:height};
 if( width>maxWidth || height>maxHeight )
 {
  rateWidth = width / maxWidth;
  rateHeight = height / maxHeight;

  if( rateWidth > rateHeight )
  {
   param.width = maxWidth;
   param.height = Math.round(height / rateWidth);
  }else
  {
   param.width = Math.round(width / rateHeight);
   param.height = maxHeight;
  }
 }
 param.left = Math.round((maxWidth - param.width) / 2);
 param.top = Math.round((maxHeight - param.height) / 2);
 return param;
}

二、使用js的另一种方法一次选中多个图片预览展示

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>测试页面</title>
<script type="text/javascript">
 //下面用于多图片上传预览功能
 function setImagePreviews(avalue) {
  var docObj = document.getElementById("doc");
  var dd = document.getElementById("dd");
  dd.innerHTML = "";
  var fileList = docObj.files;
  for (var i = 0; i < fileList.length; i++) {   

   dd.innerHTML += "<div style='float:left' > <img id='img" + i + "' /> </div>";
   var imgObjPreview = document.getElementById("img"+i); 
   if (docObj.files && docObj.files[i]) {
    //火狐下,直接设img属性
    imgObjPreview.style.display = 'block';
    imgObjPreview.style.width = '150px';
    imgObjPreview.style.height = '180px';
    //imgObjPreview.src = docObj.files[0].getAsDataURL();
    //火狐7以上版本不能用上面的getAsDataURL()方式获取,需要一下方式
    imgObjPreview.src = window.URL.createObjectURL(docObj.files[i]);
   }
   else {
    //IE下,使用滤镜
    docObj.select();
    var imgSrc = document.selection.createRange().text;
    alert(imgSrc)
    var localImagId = document.getElementById("img" + i);
    //必须设置初始大小
    localImagId.style.width = "150px";
    localImagId.style.height = "180px";
    //图片异常的捕捉,防止用户修改后缀来伪造图片
    try {
     localImagId.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
     localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;
    }
    catch (e) {
     alert("您上传的图片格式不正确,请重新选择!");
     return false;
    }
    imgObjPreview.style.display = 'none';
    document.selection.empty();
   }
  } 

  return true;
 }

</script>
</head>

<body>
<div style="margin :0px auto; width:990px;">
<input type="file" name="file" id="doc" multiple="multiple" style="width:150px;" onchange="javascript:setImagePreviews();" accept="image/*" />
<div id="dd" style=" width:990px;"></div>
</div>
</body>
</html>

以上这篇js前端实现多图图片上传预览的两个方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js实现在字符串中提取数字
Nov 05 Javascript
js的正则test,match,exec详细解析
Jan 29 Javascript
Python脚本后台运行的几种方式
Mar 09 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
Jan 17 Javascript
jquery 遍历数组 each 方法详解
May 25 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
Jun 20 Javascript
详解Bootstrap各式各样的按钮(推荐)
Dec 13 Javascript
详解Angular 4.x NgTemplateOutlet
May 24 Javascript
AngularJS通过ng-Img-Crop实现头像截取的示例
Aug 17 Javascript
Angular2进阶之如何避免Dom误区
Apr 02 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
Apr 25 Javascript
vue实现随机验证码功能(完整代码)
Dec 10 Javascript
js实时获取窗口大小变化的实例代码
Nov 18 #Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
Nov 18 #Javascript
整理一下常见的IE错误
Nov 18 #Javascript
require、backbone等重构手机图片查看器
Nov 17 #Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
Nov 17 #Javascript
移动端js图片查看器
Nov 17 #Javascript
javascript另类方法实现htmlencode()与htmldecode()函数实例分析
Nov 17 #Javascript
You might like
Php做的端口嗅探器--可以指定网站和端口
2006/10/09 PHP
PHP 字符串 小常识
2009/06/05 PHP
使用PHP接收POST数据,解析json数据
2013/06/28 PHP
php调用MySQL存储过程的方法集合(推荐)
2013/07/03 PHP
Linux下PHP连接Oracle数据库
2014/08/20 PHP
PHP实现QQ登录实例代码
2016/01/14 PHP
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
javascript 多浏览器 事件大全
2010/03/23 Javascript
jQuery asp.net 用json格式返回自定义对象
2010/04/07 Javascript
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
2016/12/05 Javascript
js实现楼层导航功能
2017/02/23 Javascript
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
2017/12/14 Javascript
Vue实现搜索 和新闻列表功能简单范例
2018/03/16 Javascript
vue 标签属性数据绑定和拼接的实现方法
2018/05/17 Javascript
vue axios基于常见业务场景的二次封装的实现
2018/09/21 Javascript
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
Python深入学习之闭包
2014/08/31 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
2020/01/05 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
2021/02/25 Python
意大利奢侈品网站:Italist
2016/08/23 全球购物
乌克兰香水和化妆品网站:Notino.ua
2018/03/26 全球购物
发展部经理职责规定
2014/02/22 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
学校学习雷锋活动总结
2014/07/03 职场文书
大学生简短的自我评价
2014/09/12 职场文书
个人对照检查剖析材料
2014/10/13 职场文书
当你焦虑迷茫时,请读读这6句话
2019/07/24 职场文书
Java面试题冲刺第十六天--消息队列
2021/08/07 面试题
Win11 Build 21996.1 Dev版怎么样? win11系统截图欣赏
2021/11/21 数码科技