经常在网上看到说由于安全问题,新出的浏览器已经屏蔽了预览及检测本地文件的功能,也就是说在上传前已无法再检测文件大小了,只有传到服务器上由服务器检测。
可问题是,我发现很多大网站,如网易,在我们上传大邮件前,还是在一瞬间就检测出了文件大小是否超过限制,很明显是在客户端检测的,请问是采用的什么机制。哪位网友在这方面有研究吗,能否提供些实例代码或解决方案。
可问题是,我发现很多大网站,如网易,在我们上传大邮件前,还是在一瞬间就检测出了文件大小是否超过限制,很明显是在客户端检测的,请问是采用的什么机制。哪位网友在这方面有研究吗,能否提供些实例代码或解决方案。
//检查用户是否选择了上传的文件
function check()
{
if(document.form1.FILE1.value=="")
{
alert("请选择上传文件");
return false;
}else
{
if(ShowFolderSize(document.form1.FILE1.value))
{
return true;
}
}
return false;
}
//验证文件大小
function ShowFolderSize(filespec)
{
var fso, f;
var maxsize=1000000;//定义允许文件的大小,单位B
fso = new ActiveXObject("Scripting.FileSystemObject");
if (fso.FolderExists(filespec))
{
f = fso.GetFolder(filespec);
}
else if (fso.FileExists(filespec))
{
f = fso.GetFile(filespec);
}
else
{
alert("该文件不存在!");
return false;
}
if(f.size>maxsize)
{
alert("文件大小超出规定,请您选择小于"+maxsize+"字节的文件进行上传");
return false;
}
return true;
}
</script>
<body bgcolor="#ffffff">
<form name="form1" METHOD="POST" ACTION=uploadfile.jsp ENCTYPE="multipart/form-data">
<INPUT TYPE="FILE" NAME="FILE1" SIZE="30" id="myfile"> <INPUT TYPE="submit" onClick="return check()" VALUE="上传">
</form>
</body>
此控件是基于标准HTTP协议实现的文件上传功能。优势是扩展性非常好,整合简单,支持批量上传文件和上传文件夹功能,适合各种简单WEB项目。
另外一个特点是支持自动上传指定的本地文件。单文件上传演示上传本地文件代码
使用步骤如下:
1.调用AddFile函数添加本地文件,注意路径需要使用双斜框(\\)
2.调用PostFirst函数开始上传文件。<script type="text/javascript" language="javascript">
var uploaderMgr = new HttpUploaderMgr();
uploaderMgr.Load();//加载控件 window.onload = function()
{
uploaderMgr.Init();//初始化控件
//添加一个本地文件
uploaderMgr.AddFile("D:\\Soft\\QQ2010.exe");
uploaderMgr.PostFirst(); };
</script>
单文件整合代码: 服务器返回消息:<input id="txtFilePath" type="text" size="50" />
<script type="text/javascript" language="javascript">
var uploaderMgr = new HttpUploaderSingleMgr();
uploaderMgr.Config["PostUrl"] = "http://localhost:8080/asp.net/upload.aspx";
uploaderMgr.Load();
//文件上传完成后执行的回调函数
uploaderMgr.CompleteHook = function(msg)
{
document.getElementById("txtFilePath").value = msg;
}; window.onload = function()
{
uploaderMgr.Init();
};
</script>示例下载:
CAB安装包
开发文档
ASP示例
ASP.NET示例
JSP示例
PHP示例