1.我要限制上传文件的大小
2.不要在webconfiger中写( <httpRuntime maxRequestLength="" executionTimeout="" />暂不需要)
3.我用的是File Field控件,选了 "作为服务器端控件运行"
用的是
(
Size = this.File1.PostedFile.ContentLength; //获得上传文件的大小
if((imgSize/1024)>200) //文件大小不能超过200k
{
Response.Write("文件太大");
}
)
这个方法不好,需要大量时间
如何能在客户端就判断出大小呢??
不限于此控件,各种方法都行,例如组件,自定义控件....等 只要实现就好
2.不要在webconfiger中写( <httpRuntime maxRequestLength="" executionTimeout="" />暂不需要)
3.我用的是File Field控件,选了 "作为服务器端控件运行"
用的是
(
Size = this.File1.PostedFile.ContentLength; //获得上传文件的大小
if((imgSize/1024)>200) //文件大小不能超过200k
{
Response.Write("文件太大");
}
)
这个方法不好,需要大量时间
如何能在客户端就判断出大小呢??
不限于此控件,各种方法都行,例如组件,自定义控件....等 只要实现就好
function GetFileSize()
{
var filename=document.all.File.value;
if(filename=='')
{
return false;
}
try
{
var ado_stream=new ActiveXObject("ADODB.Stream");
//1=adTypeBinary;2=adTypeText
ado_stream.Type=2;
ado_stream.Open();
ado_stream.LoadFromFile(filename);//将文件信息存入流
alert((ado_stream.Size/1024).toFixed(2)+"KB")
}
catch(e)
{
window.confirm(e);
return false;
}
return true;
}
</script>
<input type=file id="File"><input type=button onclick="GetFileSize()">
楼主,我在JS社区找的。
{
if(fso.FileExists(oStr))
{
var oaFile = fso.GetFile(oStr);
var oSize = oaFile.Size;
return oSize;
}
else
{
return -1;
}
}
因为以客户端操作客户硬盘上的文件,需要很大的权限,最低限度,也需要客户端你的网站设置为信任站点.
我尝试使用 adandelion(猪头) 提供的代码,在本机上试验了一下,并且把运行的站点设置为信任站点,仍然出现错误的提示.
如果在客户端判断的话要用ActiveX的fso组件,但这样要求在客户端把ie的安全性设置调低(要放松对ActiveX的限制),因为这样我放弃的这个方法,具体程序如下(确实可行):
<script language="JavaScript">
<!--
function ShowSize(files)
{
var fso,f,s;
fso=new ActiveXObject("Scripting.FileSystemObject");
f=fso.GetFile(files);
if((f.size/(1024*1024))>4){
alert("对不起,上传的文件不能大于4兆!!");
return false;
}
else
return true;
}
//-->
</script>
<input id="klfile" type="file" size="25" name="klfile" runat="server" onChange="return ShowSize(klfile.value)">
另外,我现在选择在服务器端判断,但现在在服务器上判断又遇到新问题了,就是IIS最多只支持4兆,多于4兆就上传出错,有什么方法请通知我一声,呵呵
在webconfig文件中设置<httpRuntime executionTimeout="300" maxRequestLength="100960" useFullyQualifiedRedirectUrl="false"/> ,这样IIS最大能通过的文件是10M左右,然后就能在程序中作出判断,部分程序如下:
FileSize1 = klfile.PostedFile.ContentLength / (1024 * 1024)
If (FileSize1 > 4) Then
Response.Write("<script>javascript:alert('服务器说:对不起,上传的文件不能大于4兆');</script>")
Else
'执行上传操作
End If
希望能帮到你^_^