js显示上传图片的缩略图、验证上传文件的格式、验证上传文件大小、验证图片宽、高
来源:互联网 发布:desmume模拟器mac版 编辑:程序博客网 时间:2024/05/16 07:39
js显示上传图片的缩略图、验证上传文件的格式、验证上传文件大小、验证图片宽、高
作为刚入职几个月的小萌新,接到的其中一个需求,就是做OA首页广告位的图片功能,虽然增删改查很简单,不过就难在上传图片和显示图片这个地方。我最不擅长,最讨厌的就是上传功能。不过最后也解决了。今天的文章,主要是显示图片缩略图和系列验证功能。也让我耗费了1天工作日的时间,主要是请教项目组的大佬,在百度上找大佬的文章、博客。因为这功能我以前没弄过。(最后再上功能需求图)
上代码,用google浏览器,可用
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <c:set var="ctx" value="${pageContext.request.contextPath}" /> <html> <head> <title></title> <script type="text/javascript" src="${ctx }/jquery/jquery-1.8.3.js"></script> <script type="text/javascript"> //下面用于图片上传预览功能、后缀名判断、文件大小、图片宽高判断 // 若是某一函数要调用该函数,则可以 setImagePreview($("#file")[0]) function setImagePreview(obj) { //var filename = obj.value;// 如 C:\xxx.png if(obj.value == null || obj.value == '') {//也可以不写这个判断 obj.outerHTML=obj.outerHTML;//清空 return; } //验证文件扩展名是否符合要求 var res = validateExtends(obj); if (res == false) { alert("文件不合法,暂只支持jpg、png、bmp格式!"); obj.outerHTML=obj.outerHTML;//清空 return; } //验证大小 res = validateSize(obj); if (res == false) { obj.outerHTML=obj.outerHTML;//清空 return; } //还可以验证图片的 width 和 height //注意,这里有个坑,清空文件操作,是在函数里执行的 //img.onload 是在 显示图片才执行的。 //具体原因请看函数内 widthAndHeight(obj); //获得 路径,显示图片,如果调用 widthAndHeight 函数,下面两句代码要注释 //var objUrl = getObjectURL(f.files[0]); //$("#preview").attr("src", objUrl); //获得 图片 路径 function getObjectURL(obj) { debugger; var url = null; if (window.createObjectURL != undefined) { // basic url = window.createObjectURL(obj);//这个未触发过,不知道对不对,如果报错,参数改成 obj.files[0] } else if (window.URL != undefined) { // mozilla(firefox) url = window.URL.createObjectURL(obj.files[0]);// google浏览器 走了这句代码 } else if (window.webkitURL != undefined) { // webkit or chrome url = window.webkitURL.createObjectURL(obj);//这个未触发过,不知道对不对,如果报错,参数改成 obj.files[0] } return url; } //验证 文件后缀名是否符合要求 function validateExtends(obj) { var arr = [ "jpg", "png", "bmp" ];//文件后缀名 var name = obj.value;//文件名 C:\xxx.png //获得文件后缀名 var index = name.lastIndexOf("."); //截取字符串,并转换为小写 var ext = name.substr(index + 1).toLowerCase(); //判断后缀名是否符合要求 for (var j = 0; j < arr.length; j++) { if (ext == arr[j]) { return true;//符合 } } return false;//不符合 } //验证上传文件大小 function validateSize(obj) { var name = obj.value;//文件名 xxx.png //判断文件大小是否超过5M var size = obj.size / 1024;// 字节 / 1024 = KB var max_size = 5 * 1024;//允许最大KB if (size == 0) { alert(name + " 为空文件"); return false; } else if (size > max_size) { alert(name + " 大小超过5M"); return false; } return true; } //验证图片的width 和 height function widthAndHeight(obj) { //创建虚拟的img图片,只是为了能获取上传图片的宽和高 var img = new Image(); img.src = getObjectURL(obj); img.onload = function() { var width = this.width; var height = this.height; //进行判断,是否符合像素要求 if (width > 500 || height > 500) { alert("图片宽不能大于500像素,图片高不能大于500像素"); obj.outerHTML=obj.outerHTML;//清空 return; } //获得路径,显示图片 var objUrl = getObjectURL(obj); $("#preview").attr("src", objUrl); //问:为什么显示图片的代码放这里? //答:因为如果放外面,会先显示图片,然后在执行这个 img.onload 函数 // 找了好久,都没找到解决函数,所以只能放 img.onload 函数里面 // 所以,如果要判断上传图片的宽高,这两句代码要写在这里面 // 外面的两句代码要注释掉 };//end onload } }// setImagePreview </script></head> <body> <div> <span>缩略图:</span> <img id="preview" alt="" src="" style="width: 300; height: 300;"> </div> <br /> <input type="file" id="file" name="file" onchange="setImagePreview(this)"> </body> </html>
阅读全文
0 0
- js显示上传图片的缩略图、验证上传文件的格式、验证上传文件大小、验证图片宽、高
- 上传图片的格式验证
- js验证上传图片文件大小,类型等
- js验证上传文件大小、图片类型限制
- 验证上传图片的信息
- 上传图片的综合验证
- struts2上传图片验证格式
- java上传图片js验证
- 图片上传大小,类型,宽高验证
- 上传的js验证
- javascript验证图片上传的格式和大小
- 上传图片验证
- jquery上传图片验证
- 上传图片验证相关
- js实现图片文件校验,验证上传的文件是图片和其后缀名,大小
- js上传图片进行预览、验证格式及尺寸
- 上传图片时js验证图片大小、尺寸、格式
- javascript验证上传文件大小
- 复选框的全选 反选
- SQLSERVER 存储过程分隔字符串的一种方法
- 一个随笔画程序
- SRS流媒体服务器搭建+ffmpeg推流VLC取流观看
- WiFi QC自动测试:Qt控制无线路由器
- js显示上传图片的缩略图、验证上传文件的格式、验证上传文件大小、验证图片宽、高
- node-webkit 使用os模块获取用户MAC值和IP
- 区分Java 对象引用 和 对象
- thinkphp5传参分页功能无效?解决方案
- Eeny Meeny Moo(约瑟夫环(暴力模拟(打表)))
- LeetCode 169. Majority Element
- 《大型网站技术架构:核心原理与案例分析》拜读总结,第六章——永无止境:网站的伸缩性架构
- 最新有收益的自媒体平台-优信新车伯乐号正式上线了!
- kettle安装,启动spoon之后一闪就没了问题