javascrip客户端验证文件大小及文件类型并重置上传
来源:互联网 发布:淘宝助理上传到仓库 编辑:程序博客网 时间:2024/05/16 11:31
为了提高效率,很多时候需要在web页面中对客户端上传的文件进行验证,然后再上传到服务器。下面是我写的一个通用的javascrip脚本,虽然调用时需要赋的参数比较多,但都是实际需要中真正需要使用到的。各位可以参考,并改成自己需要的脚本。
/*****获取文件信息 edit by zhaogw 参考by misssionOtherAttEdit.jsp*****//*file:input type="file"的对象,一般用this。vType:一个对象名,用于记录文件的文件类型信息。一般为input对象。DivType:一个Div对象的名称。把其innerHTML内容用于显示文件的类型信息。vFile:一个对象名,用于记录文件的文件名信息。一般为input对象。DivFile:一个Div对象的名称。把其innerHTML内容用于显示文件的文件名信息。vSize,DivSize同上面类似,只是记录文件的大小信息。mMaxSize:以m为单位计算其允许上传的最大文件大小。allowType:只接受的文件类型 */function getFileInfo(file,mMaxSize,allowType,vFile,DivFile,vType,DivType,vSize,DivSize){ var filePath = file.value;//文件路径 var fileName;//文件名 var fileType;//文件类型 var tmpObj;//临时对象 var notAllowType=new Array("exe","bat","asp","jsp","js","dll"); var mHTML=document.getElementById(file.name+'Td').innerHTML; /* var mHTML="<input type='file' name='"+ file.name+"' class='input100' id='"+file.id+ "' Tip='无法上传空文件' contentEditable='false' tmt:required='true' focusTips='请输入文件名' onChange='getFileInfo(this,"+ mMaxSize+",\""+allowType+"\",\""+vFile+"\",\""+DivFile+"\",\""+vType+"\",\""+DivType+"\",\""+vSize+"\",\""+DivSize+"\")'>"; */// alert(mHTML); //get file name if(filePath != null && filePath != ''){ var pass=true; //文件类型 fileType = filePath.substring(filePath.lastIndexOf('.') + 1,filePath.length); if (fileType!=null&&fileType!='') { for (var i in notAllowType){ if (fileType.toLowerCase()==notAllowType[i]){ pass=false; break;} } } //允许的类型,空的话就不设置允许类型 var match=false; if (allowType!=null&&allowType!=''){ var allowList=allowType.split('|'); for (var j in allowList){ if (fileType.toLowerCase()==allowList[j].toLowerCase()){ match=true; break;} } } else {match=true;} if (pass&&match) { fileName = filePath.substring(filePath.lastIndexOf('\\') + 1,filePath.length); tmpObj=document.getElementById(vType); if (tmpObj!=null) tmpObj.value = fileType; tmpObj=document.getElementById(DivType); if (tmpObj!=null) tmpObj.innerHTML = fileType; tmpObj=document.getElementById(vFile); if (tmpObj!=null) tmpObj.value = fileName; tmpObj=document.getElementById(DivFile); if (tmpObj!=null) tmpObj.innerHTML = fileName; try{ var fso,f,s; fso = new ActiveXObject("Scripting.FileSystemObject"); f = fso.GetFile(file.value); if(f.Size > mMaxSize*1048576){ alert("文件大小不能超过"+mMaxSize+"M"); document.getElementById(file.name+'Td').innerHTML = mHTML; tmpObj=document.getElementById(vType); if (tmpObj!=null) tmpObj.value = ''; tmpObj=document.getElementById(DivType); if (tmpObj!=null) tmpObj.innerHTML = ''; tmpObj=document.getElementById(vFile); if (tmpObj!=null) tmpObj.value = ''; tmpObj=document.getElementById(DivFile); if (tmpObj!=null) tmpObj.innerHTML = ''; tmpObj=document.getElementById(vSize); if (tmpObj!=null) tmpObj.value = ''; tmpObj=document.getElementById(DivSize); if (tmpObj!=null) tmpObj.innerHTML = ''; return; } else { tmpObj=document.getElementById(vSize); if (tmpObj!=null) tmpObj.value = f.Size; tmpObj=document.getElementById(DivSize); if (tmpObj!=null) tmpObj.innerHTML = f.Size+" byte(字节)"; var imgType=new Array("jpg","jpeg","gif","bmp"); var isImg=false; //文件类型 if (fileType!=null&&fileType!='') { for (var k in imgType){ if (fileType.toLowerCase()==imgType[k]){ isImg=true; break;} } } var tmpObj=document.getElementById("imgView"); if (isImg&&tmpObj){ var y = document.getElementById(file.name+"img"); if(y){ y.src = "file://localhost/" + file.value; }else{ var img=document.createElement("img"); img.setAttribute("src","file://localhost/"+file.value); img.setAttribute("width","120"); img.setAttribute("height","90"); img.setAttribute("id",file.name+"img"); tmpObj.appendChild(img); } }} }catch(e){ //ignore } } else if (!pass) {alert("不允许上传文件类型为:"+fileType);document.getElementById(file.name+'Td').innerHTML = mHTML;} else if (!match) {alert("只允许上传文件类型为:"+allowType);document.getElementById(file.name+'Td').innerHTML = mHTML;} }}
调用方法的代码:
<td width="23%" class="inputTd" id="fileNameTd" colspan="3"> <input type="file" name="fileName" class="input100" id="fileName" Tip="无法上传空文件" Usage="notempty" contentEditable="false" tmt:required="true" focusTips="请输入文件名" onChange="getFileInfo(this,10,'','vo.fileName','fileNameTd2','vo.fileType','fileTypeDiv','vo.fileSize','fileSizeDiv')"> <input type="hidden" name="vo.fileName" id="vo.fileName"> <span id="fileNameDiv" name="fileNameDiv"></span></td>
需要显示当前上传图片的需要加入以下代码:
<div id="imgView"> </div>
简单说明下脚本的相关约定:
1:如必须使用<td>对象来(或者别的有innerHTML属性的对象来包含着input的type="file"的对象,并且名称必须是input的name属性+"Td"为后缀)
2:imgView写死了,由于不想再加入更多的参数,因此,这里就固定这个了。大家也可以把名称作参数传递进去。看各位的方便了。
3:所有参数都可以为''但第一个参数基本上是this。脚本会自动去判断相关的参数的。
原创作品出自努力偷懒,转载请说明文章出处:http://blog.csdn.net/kfarvid或 http://www.cnblogs.com/kfarvid/
- javascrip客户端验证文件大小及文件类型并重置上传
- javascrip客户端验证文件大小及文件类型并重置上传
- javascrip客户端验证文件大小及文件类型并重置上传
- javascrip客户端验证文件大小及文件类型并重置上传
- javascrip客户端验证文件大小及文件类型并重置上传
- 客户端验证上传文件类型
- Java实现多个文件上传(验证文件大小、文件类型)
- “js+flash上传组件”客户端验证文件大小
- ASP.NET上传图片,服务器端验证,宽度,高度,文件类型,尺寸,文件大小,图片上传,图片格式检查
- FileUpload控件文件上传、扩容、限制文件类型及上传验证
- 客户端js判断文件类型和文件大小即限制上传大小图片预览
- JS验证上传文件类型
- 验证上传文件类型
- javascript验证上传文件类型
- JS验证上传文件类型
- JS验证上传文件类型
- javascript验证上传文件大小
- JQUERY验证上传文件大小
- 实用方便解决error while loading shared libraries办法,及linux gcc 下使用总结
- Linux内核Makefile文件
- jquery插件编写以及调用
- Syntax error, parameterized types are only available if source level
- 服务器无法取得url中#后的的内容
- javascrip客户端验证文件大小及文件类型并重置上传
- Strange GCC error: expected unqualified-id before ‘OTHER’ token
- OAuth 1.0 部分资料翻译
- 〖997〗-重叠 I/O 操作在进行中 的原因和解决方法
- 自己动手编写嵌入式Bootloader之(2)
- java设计模式---Prototype Pattern---原型模式(复制建立对象)
- 图片
- Mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost'
- Chrome(谷歌)浏览器扩展开发初探