[前端 4] 使用Js实现图片上传预览
导读:今天做图片上传预览,刚开始的做法是,先将图片上传到Nginx,然后重新加载页面才能看到这个图片。在这个过程中,用户一直都看不到自己上传的文件是什么样子。Ps:我发现我真的有强迫症了,都告诉我说不用改,但我真的忍受不了。结果调兼容性,时间又过去了。
一、HTML页代码
<span style="font-family:KaiTi_GB2312;font-size:18px;"><div>
<div class="img-avatar">
<div class="vic" id="localImag">
<img src="/style/css/images/img-avatar-bg.png" id="myPic" />
</div>
</div>
<p class="ui-tips">上传头像会自动生成头像缩略图片,您也可以拖动大图的裁剪区域,调整缩图内容。支持JPG、GIF、PNG等图片格式推荐尺寸:180*180像素</p>
<form id="form1" action="Teacher/uploadFile" method="post" enctype="multipart/form-data">
<input type="file" id="file" name="file" class="btn btn-sm btn-normal" style="width: 90px; height: 35px; float: left" onchange="showPicture(this.value)">
<button type="submit" class="btn btn-sm btn-normal">保存</button>
<input type="hidden" id="studentId" value="${(student.id)!}">
</form>
</div> </span>
提示:onchange方法
二、Js代码
<span style="font-family:KaiTi_GB2312;font-size:18px;">function showPicture(value){
var docObj=document.getElementById("file");
var imgObjPreview=document.getElementById("myPic");
if(docObj.files &&docObj.files[0])
{
//火狐下,直接设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[0]);
}
else
{
//IE下,使用滤镜
docObj.select();
var imgSrc = document.selection.createRange().text;
var localImagId = document.getElementById("localImag");
//必须设置初始大小
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;
}</span>
三、总结
这样子,选完文件之后,就可以看到自己选择的图片啦。其实,我感觉这样做和之前的做法是有很大的区别的,之前的预览,是真正保存到服务器上了,然后从服务器加载的图片。而这种预览,只是让用户看看自己选择的东西,并没有往服务器上存。但是,我感觉这一步也是很有必要的。
Ps:话说,这个兼容性还没有调完,还有图片的裁剪功能还没有做,万一用户给提交了个忒无语的呢,嘿嘿,而且图片的格式问题还没有处理呢。同样,这也是明儿个的事儿了。
[前端 4] 使用Js实现图片上传预览的更多相关文章
- js实现图片上传预览及进度条
原文js实现图片上传预览及进度条 最近在做图片上传的时候,由于产品设计的比较fashion,上网找了比较久还没有现成的,因此自己做了一个,实现的功能如下: 1:去除浏览器<input type= ...
- 移动端 js 实现图片上传 预览
方法一: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&q ...
- js实现图片上传预览功能,使用base64编码来实现
实现图片上传的方法有很多,这里我们介绍比较简单的一种,使用base64对图片信息进行编码,然后直接将图片的base64信息存到数据库. 但是对于系统中需要上传的图片较多时并不建议采用这种方式,我们一般 ...
- JS实现图片上传预览效果:方法一
<script type="text/javascript"> //处理file input加载的图片文件 $(document).ready(function(e) ...
- js实现图片上传预览
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- js实现图片上传预览功能,使用base64编码来实现
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- js前端实现多图图片上传预览
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...
- 兼容好的JS图片上传预览代码
转 : http://www.codefans.net/articles/1395.shtml 兼容好的JS图片上传预览代码 (谷歌,IE11) <html xmlns="http:/ ...
- js:s上次预览,上传图片预览,图片上传预览
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
随机推荐
- 22个值得收藏的Android开源代码-UI篇
本文介绍了android开发者中比较热门的开源代码,这些代码绝大多数可以直接应用到项目中. FileBrowserView 一个强大的文件选择控件.界面比较漂亮,使用也很简单.特点:可以自定义UI:支 ...
- Zookeeper + Hadoop2.6 集群HA + spark1.6完整搭建与所有参数解析
废话就不多说了,直接开始啦~ 安装环境变量: 使用linx下的解压软件,解压找到里面的install 或者 ls 运行这个进行安装 yum install gcc yum install gcc-c+ ...
- Form_Form树形结构HTree的介绍(案例)
2013-02-09 Created By BaoXinjian
- PLSQL_基础系列08_操作符标LPAD / TRUNC / DECODE / TRIM / INSTR(案例)
2014-12-09 Created By BaoXinjian
- iconv 批量修改文件编码
iconv_shell.sh #!/bin/bash "];then echo "Usage: `basename $0` dir filter" exit fi dir ...
- C#中调用Windows API的要点 .
介绍 API(Application Programming Interface),我想大家不会陌生,它是我们Windows编程的常客,虽然基于.Net平台的C#有了强大的类库,但是,我们还是不能否认 ...
- 和为S的两个数字VS和为s的连续正数序列
题目:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,输出任意一对即可. 例如输入数组1.2.4.7.11.15和数字15.由于4+11=15, ...
- How to get the date N days ago in Python
from datetime import datetime, timedelta N = 2 date_N_days_ago = datetime.now() - timedelta(days=N) ...
- [HDU 3033] I love sneakers! (动态规划分组背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3033 题意:给你K种品牌,每种品牌有不同种鞋,现在每种品牌至少挑一款鞋,问获得的最大价值,如果不能每种 ...
- 在weblogic11g上发布项目遇到的一个错误(不支持web-app_3_0)
错误信息如下: 消息图标 - 错误 [HTTP:101064][WebAppModule(ssh1:ssh1.war)] Error parsing descriptor in Web appplic ...