js实现图片上传并正常显示


Posted in Javascript onDecember 19, 2015

项目经常会用到头像上传,那么怎么实现呢?

首先是HTML布局:

<label for="thumbnail" class="col-md-3 control-label">缩略图</label>
<div class="col-md-6">
 <input type="file" class="form-control" id="thumbnail" name="thumbnail">
</div>

jquery方式,IE不支持,但IE会获得绝对的上传路径信息:

function getObjectURL(file) {
 var url = null ;
 if (window.createObjectURL!=undefined) { // basic
 url = window.createObjectURL(file) ;
 } else if (window.URL!=undefined) { // mozilla(firefox)
 url = window.URL.createObjectURL(file) ;
 } else if (window.webkitURL!=undefined) { // webkit or chrome
 url = window.webkitURL.createObjectURL(file) ;
 }
 return url ;
}

$('#thumbnail').change(function() {
 var eImg = $('<img />');
 eImg.attr('src', getObjectURL($(this)[0].files[0])); // 或 this.files[0] this->input
 $(this).after(eImg);});

js实现图片上传并正常显示

网上找一份可用的代码非常不易,经过不断的筛选总结才得出兼容所有的文件上传显示
HTML布局

<form action='' method='post' name='myform'>
 <input type='file' id='iptfileupload' onchange='show()' value='' />
 <img src='1.jpg' alt='' id='img' />
</form>

JS代码:

<script type="text/javascript">
 function getPath(obj,fileQuery,transImg) {

 var imgSrc = '', imgArr = [], strSrc = '' ;

 if(window.navigator.userAgent.indexOf("MSIE")>=1){ // IE浏览器判断
 if(obj.select){
  obj.select();
  var path=document.selection.createRange().text;
  alert(path) ;
  obj.removeAttribute("src");
  imgSrc = fileQuery.value ;
  imgArr = imgSrc.split('.') ;
  strSrc = imgArr[imgArr.length - 1].toLowerCase() ;
  if(strSrc.localeCompare('jpg') === 0 || strSrc.localeCompare('jpeg') === 0 || strSrc.localeCompare('gif') === 0 || strSrc.localeCompare('png') === 0){
  obj.setAttribute("src",transImg);
  obj.style.filter=
  "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+path+"', sizingMethod='scale');"; // IE通过滤镜的方式实现图片显示
  }else{
  //try{
  throw new Error('File type Error! please image file upload..'); 
  //}catch(e){
  // alert('name: ' + e.name + 'message: ' + e.message) ;
  //}
  }
 }else{
  // alert(fileQuery.value) ;
  imgSrc = fileQuery.value ;
  imgArr = imgSrc.split('.') ;
  strSrc = imgArr[imgArr.length - 1].toLowerCase() ;
  if(strSrc.localeCompare('jpg') === 0 || strSrc.localeCompare('jpeg') === 0 || strSrc.localeCompare('gif') === 0 || strSrc.localeCompare('png') === 0){
  obj.src = fileQuery.value ;
  }else{
  //try{
  throw new Error('File type Error! please image file upload..') ;
  //}catch(e){
  // alert('name: ' + e.name + 'message: ' + e.message) ;
  //}
  }

 }

 } else{
 var file =fileQuery.files[0];
 var reader = new FileReader();
 reader.onload = function(e){

  imgSrc = fileQuery.value ;
  imgArr = imgSrc.split('.') ;
  strSrc = imgArr[imgArr.length - 1].toLowerCase() ;
  if(strSrc.localeCompare('jpg') === 0 || strSrc.localeCompare('jpeg') === 0 || strSrc.localeCompare('gif') === 0 || strSrc.localeCompare('png') === 0){
  obj.setAttribute("src", e.target.result) ;
  }else{
  //try{
  throw new Error('File type Error! please image file upload..') ;
  //}catch(e){
  // alert('name: ' + e.name + 'message: ' + e.message) ;
  //}
  }

  // alert(e.target.result); 
 }
 reader.readAsDataURL(file);
 }
 }

 function show(){
 //以下即为完整客户端路径
 var file_img=document.getElementById("img"),
 iptfileupload = document.getElementById('iptfileupload') ;
 getPath(file_img,iptfileupload,file_img) ;
 }
 </script>

更多精彩内容请参考专题《ajax上传技术汇总》,《javascript文件上传操作汇总》和《jQuery上传操作汇总》进行学习。

希望本文所述对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
一些技巧性实用js代码小结
Oct 14 Javascript
jQuery的写法不同导致的兼容性问题的解决方法
Jul 29 Javascript
js setTimeout 参数传递使用介绍
Aug 13 Javascript
js动态移动滚动条至底部示例代码
Apr 24 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
Aug 11 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
Aug 19 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
Dec 27 Javascript
原生js实现倒计时功能(多种格式调用)
Jan 12 Javascript
用js屏蔽被http劫持的浮动广告实现方法
Aug 10 Javascript
详解Vue-axios 设置请求头问题
Dec 06 Javascript
nuxt引入组件和公共样式的操作
Nov 05 Javascript
JS数组方法some、every和find的使用详情
Oct 05 Javascript
thinkphp实现无限分类(使用递归)
Dec 19 #Javascript
15个常用的jquery代码片段
Dec 19 #Javascript
js实现滚动条滚动到页面底部继续加载
Dec 19 #Javascript
jQuery对html元素的取值与赋值实例详解
Dec 18 #Javascript
jQuery打字效果实现方法(附demo源码下载)
Dec 18 #Javascript
jQuery中trigger()与bind()用法分析
Dec 18 #Javascript
jQuery+JSON实现AJAX二级联动实例分析
Dec 18 #Javascript
You might like
PHP 检查扩展库或函数是否可用的代码
2010/04/06 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
PHP7 新特性详细介绍
2016/09/06 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
PHP iconv()函数字符编码转换的问题讲解
2019/03/22 PHP
event.currentTarget与event.target的区别介绍
2012/12/31 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
推荐一个封装好的getElementsByClassName方法
2014/12/02 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
jQuery根据元素值删除数组元素的方法
2015/06/24 Javascript
JavaScript常用函数工具集:lao-utils
2016/03/01 Javascript
jQuery实现下拉框左右移动(全部移动,已选移动)
2016/04/15 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
用原生 JS 实现 innerHTML 功能实例详解
2019/04/03 Javascript
简单说说如何使用vue-router插件的方法
2019/04/08 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
Python入门篇之面向对象
2014/10/20 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
2017/10/20 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
浅谈python中requests模块导入的问题
2018/05/18 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
Python3.6简单的操作Mysql数据库的三个实例
2018/10/17 Python
Django ORM 常用字段与不常用字段汇总
2019/08/09 Python
python颜色随机生成器的实例代码
2020/01/10 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
python使用dlib进行人脸检测和关键点的示例
2020/12/05 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
外贸英语专业求职信范文
2013/12/25 职场文书
好家长事迹材料
2014/01/23 职场文书
会计毕业生自荐书
2014/06/12 职场文书
学生检讨书如何写
2014/10/30 职场文书
小学教师工作总结2015
2015/04/07 职场文书
地雷战观后感
2015/06/09 职场文书
培训计划通知
2015/07/15 职场文书