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汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
Dec 20 Javascript
js二级地域选择的实现方法
Jun 17 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
Apr 16 Javascript
Javascript学习笔记之数组的构造函数
Nov 23 Javascript
JS模式之简单的订阅者和发布者模式完整实例
Jun 30 Javascript
纯js模拟div层弹性运动的方法
Jul 27 Javascript
实例详解angularjs和ajax的结合使用
Oct 22 Javascript
node.js中axios使用心得总结
Nov 29 Javascript
微信小程序工具函数封装
Oct 28 Javascript
如何在JavaScript中创建具有多个空格的字符串?
Feb 23 Javascript
Vue指令实现OutClick的示例
Nov 16 Javascript
vue 使用 sortable 实现 el-table 拖拽排序功能
Dec 26 Vue.js
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获取当前完整URL地址的函数
2014/12/21 PHP
php的闭包(Closure)匿名函数初探
2016/02/14 PHP
js 面向对象的技术创建高级 Web 应用程序
2010/02/25 Javascript
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
jquery滚动特效集锦
2015/06/03 Javascript
JavaScript检测字符串中是否含有html标签实现方法
2015/07/01 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
JavaScript几种数组去掉重复值的方法推荐
2016/04/12 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
jquery replace方法去空格
2017/05/08 jQuery
简单实现jQuery弹窗效果
2017/10/30 jQuery
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
vue实现路由切换改变title功能
2019/05/28 Javascript
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
python3.0 字典key排序
2008/12/24 Python
python抓取网页中的图片示例
2014/02/28 Python
Python基础教程之正则表达式基本语法以及re模块
2016/03/25 Python
解决Python requests 报错方法集锦
2017/03/19 Python
转换科学计数法的数值字符串为decimal类型的方法
2018/07/16 Python
在ubuntu16.04中将python3设置为默认的命令写法
2018/10/31 Python
简单了解django索引的相关知识
2019/07/17 Python
详解python pandas 分组统计的方法
2019/07/30 Python
django echarts饼图数据动态加载的实例
2019/08/12 Python
tensorflow 获取所有variable或tensor的name示例
2020/01/04 Python
Python守护进程实现过程详解
2020/02/10 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
英国汽车座椅和婴儿车购物网站:Uber Kids
2017/04/19 全球购物
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
教你使用TensorFlow2识别验证码
2021/06/11 Python
Python基础之变量的相关知识总结
2021/06/23 Python
vue实现简易音乐播放器
2022/08/14 Vue.js