如何在上传图片时在客户端用js判断图片大小并弹出提示
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在上传图片时在客户端用js判断图片大小并弹出提示相关的知识,希望对你有一定的参考价值。
jsp中是这么写的
有四个input和一个上传按钮
<td class="input">
<input TYPE="file" name="FILE1" OnKeyDown="return false" SIZE="60"><br>
<input TYPE="file" name="FILE2" OnKeyDown="return false" SIZE="60"><br>
<input TYPE="file" name="FILE3" OnKeyDown="return false" SIZE="60"><br>
<input TYPE="file" name="FILE4" OnKeyDown="return false" SIZE="60">
</td>
<td valign="bottom" class="input">
<INPUT TYPE="SUBMIT" VALUE=" 上 传 " >
在function中进行图片大小判断.设定在500k.想在要在input获取到图片地址时.就给出图片过大的提示.
function怎么获取到图片大小.
不要用会弹出ie提示框的方法.那样如果选择否.将不会提示了.
不要复制粘贴好不好啊
<script language=javascript>
var ImgObj=new Image(); //建立一个图像对象
var AllImgExt=".jpg|.jpeg|.gif|.bmp|.png|"//全部图片格式类型
var FileObj,ImgFileSize,ImgWidth,ImgHeight,FileExt,ErrMsg,FileMsg,HasCheked,IsImg//全局变量 图片相关属性
//以下为限制变量
var AllowExt=".jpg|.gif" //允许上传的文件类型 ŀ为无限制 每个扩展名后边要加一个"|" 小写字母表示
//var AllowExt=0
var AllowImgFileSize=70; //允许上传图片文件的大小 0为无限制 单位:KB
var AllowImgWidth=500; //允许上传的图片的宽度 ŀ为无限制 单位:px(像素)
var AllowImgHeight=500; //允许上传的图片的高度 ŀ为无限制 单位:px(像素)
HasChecked=false;
function CheckProperty(obj) //检测图像属性
FileObj=obj;
if(ErrMsg!="") //检测是否为正确的图像文件 返回出错信息并重置
ShowMsg(ErrMsg,false);
return false; //返回
if(ImgObj.readyState!="complete") //如果图像是未加载完成进行循环检测
setTimeout("CheckProperty(FileObj)",500);
return false;
ImgFileSize=Math.round(ImgObj.fileSize/1024*100)/100;//取得图片文件的大小
ImgWidth=ImgObj.width //取得图片的宽度
ImgHeight=ImgObj.height; //取得图片的高度
FileMsg="\n图片大小:"+ImgWidth+"*"+ImgHeight+"px";
FileMsg=FileMsg+"\n图片文件大小:"+ImgFileSize+"Kb";
FileMsg=FileMsg+"\n图片文件扩展名:"+FileExt;
if(AllowImgWidth!=0&&AllowImgWidth<ImgWidth)
ErrMsg=ErrMsg+"\n图片宽度超过限制。请上传宽度小于"+AllowImgWidth+"px的文件,当前图片宽度为"+ImgWidth+"px";
if(AllowImgHeight!=0&&AllowImgHeight<ImgHeight)
ErrMsg=ErrMsg+"\n图片高度超过限制。请上传高度小于"+AllowImgHeight+"px的文件,当前图片高度为"+ImgHeight+"px";
if(AllowImgFileSize!=0&&AllowImgFileSize<ImgFileSize)
ErrMsg=ErrMsg+"\n图片文件大小超过限制。请上传小于"+AllowImgFileSize+"KB的文件,当前文件大小为"+ImgFileSize+"KB";
if(ErrMsg!="")
ShowMsg(ErrMsg,false);
else
ShowMsg(FileMsg,true);
ImgObj.onerror=function()ErrMsg='\n图片格式不正确或者图片已损坏!'
function ShowMsg(msg,tf) //显示提示信息 tf=true 显示文件信息 tf=false 显示错误信息 msg-信息内容
msg=msg.replace("\n","<li>");
msg=msg.replace(/\n/gi,"<li>");
if(!tf)
document.all.UploadButton.disabled=true;
FileObj.outerhtml=FileObj.outerHTML;
document.getElementById("preview").innerHTML=msg;
HasChecked=false;
else
document.all.UploadButton.disabled=false;
if(IsImg)
document.getElementById("preview").innerHTML="<img src='"+ImgObj.src+"' width='60' height='60'>"
else
// document.getElementById("preview").innerHTML="非图片文件";
document.getElementById("preview").innerHTML=msg;
HasChecked=true;
function CheckExt(obj)
ErrMsg="";
FileMsg="";
FileObj=obj;
IsImg=false;
HasChecked=false;
document.getElementById("preview").innerHTML="预览区";
if(obj.value=="")return false;
document.all.UploadButton.disabled=true;
FileExt=obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();
if(AllowExt!=0&&AllowExt.indexOf(FileExt+"|")==-1) //判断文件类型是否允许上传
ErrMsg="\n该文件类型不允许上传。请上传 "+AllowExt+" 类型的文件,当前文件类型为"+FileExt;
ShowMsg(ErrMsg,false);
return false;
if(AllImgExt.indexOf(FileExt+"|")!=-1) //如果图片文件,则进行图片信息处理
IsImg=true;
ImgObj.src=obj.value;
CheckProperty(obj);
return false;
else
FileMsg="\n文件扩展名:"+FileExt;
ShowMsg(FileMsg,true);
</script>
<form enctype="multipart/form-data" method="POST" onsubmit="return HasChecked;">
<fieldset style="width: 372; height: 60;padding:2px;">
<input type="file" id="file1" onchange="CheckExt(this)" style="width:180px;">
<input type="submit" id="UploadButton" value="开始上传" disabled><br>
<div id="preview" style="border:1 solid #808080;background:#E0E0E0;width100%;height:20px;color:#606060;padding:5px;" >
</div>
</fieldset> 参考技术A <input type="text" size="4" value="10" name="fileSizeLimit" id="fileSizeLimit"/> K
<input type="file" name="file1" id="file1" size="40" onchange="changeSrc(this)"/>
<img src="about:blank" id="fileChecker" alt="test" height="18"/>
//前面为网页
<script type="text/javascript">
var oFileChecker = document.getElementById("fileChecker");
function changeSrc(filePicker)
oFileChecker.src = filePicker.value;//读图片
//这个很重要,判断是否完全读完,否则判断图片大小不准确
oFileChecker.onreadystatechange = function ()
if (oFileChecker.readyState == "complete")
checkSize();
function checkSize()
var limit = document.getElementById("fileSizeLimit").value * 1024;
if (oFileChecker.fileSize > limit)
alert("too large");
else
alert("ok");
</script>本回答被提问者和网友采纳 参考技术B 我做了个小demo,看能否帮助到你。
以前我们项目中也是这样获得的:
<html>
<head>
<script type="text/javascript">
function getFileSize()
var path = file.value;
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.GetFile(path);
alert(f.size);
</script>
</head>
<body>
<input type="file" name="file" id="file" value=""></input>
<input type="button" name="GetSize" onclick="getFileSize()" value="获得选择文件大小"></input>
</body>
</html>
cropper动态裁剪图片(极简)
借助cropper插件可以很简单地实现客户端图片自定义裁剪,本文代码模拟的是最简单最基础的应用。
文件上传前的大小、类型限制可以参考:MVC中通过jquery实现图片预览、上传,并对文件类型、大小进行判断(极简)
裁剪后的内容如何上传至服务器,请参考:MVC中客户端向服务器端上传base64格式的图片
cropper插件下载链接(含v1.5.11版Cropper.js、Cropper.css,以及jquery.min.js):cropper插件下载
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>cropper.js动态裁剪图片</title>
<link href="Scripts/cropper.css" rel="stylesheet" />
<script src="Scripts/cropper.js"></script>
<script src="Scripts/jquery.min.js"></script>
<script>
$(function() {
var CROPPER;
//文件上传控件onchange事件,生成原图的预览以及Cropper对象
$("#imgReader").change(function(e) {
if(!this.files.length)return; //如果未选择图片则退出函数
//释放之前的Cropper资源——否则无法重新选择图片
CropperDispose();
//定义文件读取对象,并读取文件上传控件选择的文件。
var reader=new FileReader();
reader.readAsDataURL(this.files[0]);
//文件对象的onload事件,上传文件载入后生成预览,并在预览图上生成Cropper对象
reader.onload=function(e) {
$("#cropImg").attr("src",this.result); //预览,this.result也可设置为e.target.result
//定义Cropper对象
//第一个参数一定不能写成$("#cropImg"),不要问怎么知道的,我满含泪水无语凝噎。
//第一个参数也可以写成document.getElementById("cropImg")
CROPPER=new Cropper($("#cropImg")[0],{//参数很多,可以百度
aspectRatio: 16/5, //裁剪框宽高比例
autoCropArea: 1, //初始裁剪框显示比例
});
};
});
//裁剪图片按钮click事件,获得裁剪后图片的base64值,并通过img控件显示
$("#btnCrop").click(function() {
//获取裁剪框内内容的base64值
//第一个参数设置生成文件的类型,可以查询http的content-type对照表
//第二个参数为生成图片的压缩率
let cropImg=CROPPER.getCroppedCanvas().toDataURL("image/jpeg",0.8);
$("#cropResult").attr("src",cropImg); //将base64通过img控件显示出来
});
//释放Cropper资源
function CropperDispose() {
if(CROPPER) {
CROPPER.destroy(); CROPPER=null;
}
}
});
</script>
</head>
<body>
<p><input type="file" id="imgReader" accept="image/*" /></p><!--文件上传控件-->
<div style="width:300px;">
<p><img src="" style="width:100%;" id="cropImg" /></p><!--图片预览容器-->
<p><img src="" style="width:100%;" id="cropResult" /></p><!--裁剪后的图片容器-->
</div>
<p>
<button id="btnCrop">裁剪图片</button><!--裁剪图片按钮-->
</p>
</body>
</html>
以上是关于如何在上传图片时在客户端用js判断图片大小并弹出提示的主要内容,如果未能解决你的问题,请参考以下文章
php制作后台,上传图片,点击上传,弹出一个图片库,从图片库里面选择图片,如何实现?