Js对上传文件的大小和类型以及路径的检测-------菜鸟学javascript心得
今天,一同学跟我聊着聊着就问道了如何通过js来检测客户端上传文件的大小、类型已经本地路径!其实我也没有写过这样类似的案例!我只记得之前看一些就是教程的时候,有一个这样的ActiveXObject()的方法,来处理文件的。于是查了一下javascript的参考文档,边写边测试!最后通过结果如下:

其中的代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> New Document </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<script language="JavaScript">
function checkFileSize(files)
{
//新建处理文件对象
var fileSO=new ActiveXObject("Scripting.FileSystemObject");
//获取文件
file=fileSO.GetFile(files);
//获取文件大小
fileSize=file.size;
//获取文件名称
fileName=file.name;
//获取文件路径
filePath=file.path;
// alert(file.path)
//将文件大小转成KB
var mySizeKB = file.size/1024;
//将文件大小转换成MB
var mySizeMB=mySizeKB/1024;
//处理文件名,截取文件的类型
var fileType=(fileName.substring(fileName.lastIndexOf(".")+1,fileName.length)).toUpperCase();
//判断大小,选择MB还是KB的单位显示!
if(mySizeMB<1){
document.getElementById("message").innerHTML="你上传的文件大小是"+mySizeKB+"KB;文件上传类型是."+fileType+";该文件在本机的路径是"+filePath;
}else{
document.getElementById("message").innerHTML="你上传的文件大小是"+mySizeMB+"MB;文件上传类型是."+fileType+";该文件在本机的路径是"+filePath;
}
}
</script>
</head>
<body>
<input type="file" name="file1" onchange="checkFileSize(this.value)">
<p>--------------------------------------------------------<br/>
<div id="message"></div>
</body>
</html>
这是我写的,但是我上网百度一下,发现我跟别人的都跟我差不多,都用到了new ActiveXObject("Scripting.FileSystemObject")!
其实,我上写的代码中,不能够预防欺骗的,因为文件可以改文件类型的,如我的是JPG格式的文件,文件名为:博客园.JPG;但我可以重命名,在后面追加了.txt,文件名成了博客园.JPG.txt;则JS就当txt文件处理,如果需求只允许txt文件上传,那么在这种情况下,这个图片文件就会以欺骗的方式被上传上去!这样就与需求想违背了!所以,后面还需要通过服务器端对其进行负责的检验文件的类型!
还有,以上代码中,fileName=file.name;这一句是可以删除掉的!不过需要将 var fileType=(fileName.substring(fileName.lastIndexOf(".")+1,fileName.length)).toUpperCase();改为var fileType=(filePath.substring(filePath.lastIndexOf(".")+1,filePath.length)).toUpperCase();这样子看起来就更假简洁一些了!
欢迎大侠留言指点。。。