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 相关文章推荐
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
Oct 16 Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
Apr 26 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
Oct 28 Javascript
Jquery树插件zTree用法入门教程
Feb 17 Javascript
浅谈angularJS 作用域
Jul 05 Javascript
AngularJS基础 ng-value 指令简单示例
Aug 03 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
Oct 24 Javascript
基于Vue实现timepicker
Apr 25 Javascript
ionic3 懒加载
Aug 16 Javascript
JSON 数据格式详解
Sep 13 Javascript
详解ES6 export default 和 import语句中的解构赋值
May 28 Javascript
vue前端和Django后端如何查询一定时间段内的数据
Feb 28 Vue.js
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 验证图片生成函数
2009/05/21 PHP
PHP 存储文本换行实现方法
2010/01/05 PHP
yii2使用ajax返回json的实现方法
2016/05/14 PHP
PHP如何通过带尾指针的链表实现'队列'
2020/10/22 PHP
JavaScript数组常用方法
2015/03/02 Javascript
基于Turn.js 实现翻书效果实例解析
2016/06/20 Javascript
jQuery表单验证简单示例
2016/10/17 Javascript
connection reset by peer问题总结及解决方案
2016/10/21 Javascript
基于vuejs+webpack的日期选择插件
2020/05/21 Javascript
JavaScript数组复制详解
2017/02/02 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
jQuery基于Ajax实现读取XML数据功能示例
2018/05/31 jQuery
Vue-router 切换组件页面时进入进出动画方法
2018/09/01 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
python动态监控日志内容的示例
2014/02/16 Python
Python图像灰度变换及图像数组操作
2016/01/27 Python
使用python实现rsa算法代码
2016/02/17 Python
浅谈pyhton学习中出现的各种问题(新手必看)
2017/05/17 Python
django限制匿名用户访问及重定向的方法实例
2018/02/07 Python
用TensorFlow实现多类支持向量机的示例代码
2018/04/28 Python
Python Web静态服务器非堵塞模式实现方法示例
2019/11/21 Python
css3强大的动画效果animate使用说明及浏览器兼容介绍
2013/01/09 HTML / CSS
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
SQL注入攻击的种类有哪些
2013/12/30 面试题
学习雷锋活动总结
2014/04/29 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
2014年医院科室工作总结
2014/12/20 职场文书
学校学期工作总结
2015/08/13 职场文书
2016七夕情人节感言
2015/12/09 职场文书
2019求职信大礼包
2019/05/15 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
Oracle设置DB、监听和EM开机启动的方法
2021/04/25 Oracle
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS
python 爬取天气网卫星图片
2021/06/07 Python
笔记本自带的win11如何跳过联网激活?
2022/04/20 数码科技