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 相关文章推荐
JQuery里选择超链接的实现代码
May 22 Javascript
让js弹出窗口居前显示的实现方法
Jul 10 Javascript
利用jq让你的div居中的好方法分享
Nov 21 Javascript
JS操作HTML自定义属性的方法
Feb 10 Javascript
jQuery中hover方法和toggle方法使用指南
Feb 27 Javascript
JS实现双击屏幕滚动效果代码
Oct 28 Javascript
JS模拟酷狗音乐播放器收缩折叠关闭效果代码
Oct 29 Javascript
js实现弹窗居中的简单实例
Oct 09 Javascript
Vue-cli3项目引入Typescript的实现方法
Oct 18 Javascript
jquery插件懒加载的示例
Oct 24 jQuery
vue 判断两个时间插件结束时间必选大于开始时间的代码
Nov 04 Javascript
JavaScript实现栈结构详细过程
Dec 06 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
ecshop 订单确认中显示省市地址信息的方法
2010/03/15 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
PHP之十六个魔术方法详细介绍
2016/11/01 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
基于PHP实现的多元线性回归模拟曲线算法
2018/01/30 PHP
jQuery+ajax实现顶一下,踩一下效果
2010/07/17 Javascript
javascript跨域方法、原理以及出现问题解决方法(详解)
2015/08/06 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
2015/12/26 Javascript
JavaScript+html5 canvas制作色彩斑斓的正方形效果
2016/01/27 Javascript
javascript的几种写法总结
2016/09/30 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
jquery根据name取得select选中的值实例(超简单)
2018/01/25 jQuery
JS 实现百度搜索功能
2018/02/01 Javascript
vue单页开发父子组件传值思路详解
2018/05/18 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
关于vue路由缓存清除在main.js中的设置
2019/11/06 Javascript
JavaScript 判断数据类型的4种方法
2020/09/11 Javascript
[06:23]2014DOTA2西雅图国际邀请赛 小组赛7月12日TOPPLAY
2014/07/12 DOTA
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
Python进阶-函数默认参数(详解)
2017/05/18 Python
解决Pycharm无法import自己安装的第三方module问题
2018/05/18 Python
Python3.5面向对象编程图文与实例详解
2019/04/24 Python
python常用数据重复项处理方法
2019/11/22 Python
零基础小白多久能学会python
2020/06/22 Python
Python 操作SQLite数据库的示例
2020/10/16 Python
Python中lru_cache的使用和实现详解
2021/01/25 Python
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
什么是索引指示器
2012/08/20 面试题
新闻网站实习自我鉴定
2013/09/25 职场文书
应届毕业生自荐信
2014/05/28 职场文书
简历自我评价范文
2019/04/24 职场文书
2019年最新七夕唯美祝福语(60条)
2019/07/22 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript
ubuntu端向日葵键盘输入卡顿问题及解决
2022/12/24 Servers