如何在上传图片时在客户端用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判断图片大小并弹出提示的主要内容,如果未能解决你的问题,请参考以下文章

JS判断图片上传时文件大小和图片尺寸

php制作后台,上传图片,点击上传,弹出一个图片库,从图片库里面选择图片,如何实现?

在html页面中有一个按钮,点击这个按钮,将页面某一个区域保存为图片,并弹出文件保存对话框,保存到本地

如何在前端用js进行多图片上传

js判断上传图片宽高及文件大小

怎么在js 里面限制上传图片的大小不能超过 1M?