c#文件上传默认大小4M,所以需要上传判定。
当大于4M,程序运行没有反映。原因:XX.PostedFile.ContentLength>XX,是在服务器端,文件上传后判定的,所以文件大了后就出现页面空白。
JS可以实现上传时先判断,并给出提示。
(1),很简单的一种方法,但是只使用于image类型。原因image提供了相关属性,在不需要的情况下就你能判断。(可以我的基本都是word,不行)。
代码示例如下:
<HTML>
<HEAD>
<title>******上传文件大小的限制和判断***********</title>
<script language="javascript" type="text/javascript">
function getFileSize(filename)
{
var FileMaxSize = 1000;//限制上传的文件大小,单位(k)
alert(filename);
var img = new Image();
img.src = filename;
alert(img.src);
alert(img.fileSize);
if(img.fileSize>FileMaxSize*1024)
{
alert("NO!!!");
return false;
}
}
</script>
</head>
<body>
<form id="Form1" method="post" encType="multipart/form-data" runat="server">
<INPUT id="fileup" type="file" size="80" name="fileup" onpropertychange="getFileSize(this.value)">
</form>
</body>
(2) 是要点击运行ActiveX,才能运行。但是我实在模式窗口中打开,看不到ActiveX的提示,所以不行。
<HTML>
<HEAD>
<title>******上传文件大小的限制和判断***********</title>
<script language="javascript" type="text/javascript">
function getFileSize(filename)
{
// var filename = document.all('fileup').value; //获得上传文件的物理路径
if(filename =='')
{
alert("你还没有浏览要上传的文件");
return false;
}
try {
var fso,f,fname,fsize;
var flength=40000; //设置上传的文件最大值(单位:kb),超过此值则不上传。
fso=new ActiveXObject("Scripting.FileSystemObject");
f=fso.GetFile(filename);//文件的物理路径
fname=fso.GetFileName(filename);//文件名(包括扩展名)
fsize=f.Size; //文件大小(bit)
fsize=fsize/1024;
//去掉注释,可以测试
//alert("文件路径:"+f);
//alert("文件名:"+fname);
//alert("文件大小:"+fsize+"kb");
if(fsize>flength)
{
alert("上传的文件到小为:"+fsize+"kb,/n超过最大限度"+flength+"kb,不允许上传 ");
return false;
}
else
{alert("允许上传,文件大小为:"+fsize+"kb");}
}
catch(e)
{
alert(e+"/n 跳出此消息框,是由于你的activex控件没有设置好,/n"+
"你可以在浏览器菜单栏上依次选择/n"+
"工具->internet选项->/"安全/"选项卡->自定义级别,/n"+
"打开/"安全设置/"对话框,把/"对没有标记为安全的/n"+
"ActiveX控件进行初始化和脚本运行/",改为/"启动/"即可");
return false;
}
return true;
}
</script>
</head>
<body>
<form id="Form1" method="post" encType="multipart/form-data" runat="server">
<INPUT id="fileup" type="file" size="80" name="fileup" onpropertychange="getFileSize(this.value)">
<input type=button onclick="getFileSize(document.all('fileup').value)" value="测试">
</form>
</body>
(3) 上传多媒体文件的判定
下面主要谈谈另一种方式,在html标签中有一个不为一般开发人员“深”知的img标签,先来说下他有的属性:src,dynsrc,start,alt,controls,loop,loopdelay,hspace,vspace....还有一些常用的属性就不列出来了,在这里我们说一下"dynsrc"这个属性:dynsrc可以用来插入各种多媒体,格式可以是Wav、Avi、AIFF、AU、MP3、Ra、Ram等等。url为音频或视频文件及其路径,可以是相对路径或绝对路径。
示例:<img dynsrc="xxxx.mp3">
这样我们就可以根据dynsrc动态赋值任何类型文件的路径,在javascript中根据Image对象本身的fileSize属性来得到文件的大小。当然Image对象还有其他的几个属性,例如:fileCreatedDate、fileModifiedDate、fileSize、fileUpdatedDate、filters... , 代码如下:
Html代码
<script type="text/javascript">
function getFileSize(filePath)
{
var image=new Image();
image.dynsrc=filePath;
alert(image.fileSize);
}
</script>
<body>
<INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this.value)">
</body>