如何使用javascript限制文件上传大小

JavaScript010

如何使用javascript限制文件上传大小,第1张

$("#ms_upload_file").change(function(){

//检验非空和文件大小

if($(this).val() !== '' &&checkSize(this)) {//其他操作

}

})/**

* 函数:检查上传文件大小

* 输入:input的js对象

* 输出:

**/function checkSize(input) {

var Sys = {} var flag var filesize = 0 //判断浏览器种类

if (navigator.userAgent.indexOf("MSIE") >0) {

Sys.ie=true

}if (navigator.userAgent.indexOf("Firefox")>0) {

Sys.firefox=true

}//获取文件大小

if (Sys.firefox) {

filesize = input.files[0].size

} else if (Sys.ie){var fileobject = new ActiveXObject ("Scripting.FileSystemObject")//获取上传文件的对象

var file = fileobject.GetFile (input.value)//获取上传的文件

filesize = file.Size//文件大小

}//判断是否符合要求

if (filesize / (1024 * 1024) <5 ) {

flag = true

} else {

alert("附件过大,建议不要超过5M!")

flag = false

}return flag

}

1. 将你的JS文件进行压缩,百度一下,工具一把

2. 服务器端开启gzip压缩

3. 如果你是3个单独的JS,那么你可以合成1个文件,减少请求次数

4. 将你的<script>标签写在页面底部<body>标签结束之前

5. 检查你的js中是否存在特别耗时的逻辑,因为脚本加载时阻塞式的,它会加载完并执行完之后,才会加载其它资源,因此慢并不一定是文件大,也可能是文件执行花了很长时间

6. 如果还是觉得很慢,你可以使用动态加载,不要直接在页面中写<script>标签,而是动态创建一个<script>将该脚本引进来,这样的加载方式是非阻塞式的,不会影响其它资源加载。

7. 上面方法全用了,还是觉得很慢,那你应该检查你的服务器和网络情况,因为按理来说100多kb的脚本不至于慢到不可接受的地步。

8. 将页面中的资源分散到多个一级或二级域名,因为浏览器对同一个域名同时加载的资源数量是有限制的

9. 如果你还是觉得很慢,那就玩些高级玩意儿吧(如使用CDN加速等)

10. 上面方法都试过,还是不奏效?那我也没辙了,除非能现场分析。

这样设置的:

1、先用form标签创建一个上传的表单。

<form id="form1" name="form1" method="post" action="" enctype="multipart/form-data">

 <p><input type="hidden" name="MAX_FILE_SIZE" value="100000" /></p>

 <p><input name="userfile" id="userfile" type="file" onchange="check()"/></p>

</form>

2、用Javascript设置格式和大小。

<script language="JavaScript" type="text/javascript">  function check()    {var aa=document.getElementById("userfile").value.toLowerCase().split('.')//以“.”分隔上传文件字符串   // var aa=document.form1.userfile.value.toLowerCase().split('.')//以“.”分隔上传文件字符串           if(document.form1.userfile.value=="")    {        alert('图片不能为空!')        return false    }    else    {    if(aa[aa.length-1]=='gif'||aa[aa.length-1]=='jpg'||aa[aa.length-1]=='bmp'

||aa[aa.length-1]=='png'||aa[aa.length-1]=='jpeg')//判断图片格式    {var imagSize =  document.getElementById("userfile").files[0].sizealert("图片大小:"+imagSize+"B")if(imagSize<1024*1024*1)        alert("图片大小在1M以内,为:"+imagSize/(1024*1024)+"M")        return true    }    else    {        alert('请选择格式为*.jpg、*.gif、*.bmp、*.png、*.jpeg 的图片')//       return false    }    }    }  </script>

图片超过1M则不能上传 如图: