javascrip客户端验证文件大小及文件类型并重置上传_Javascript教程-查字典教程网
javascrip客户端验证文件大小及文件类型并重置上传
javascrip客户端验证文件大小及文件类型并重置上传
发布时间:2016-12-30 来源:查字典编辑
摘要:下面是我写的一个通用的javascrip脚本,虽然调用时需要赋的参数比较多,但都是实际需要中真正需要使用到的。各位可以参考,并改成自己需要的...

下面是我写的一个通用的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+"' 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%" id="fileNameTd" colspan="3">

<input type="file" name="fileName" 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。脚本会自动去判断相关的参数的。

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类