C#文件上传

本文介绍了几种在前端实现文件上传前大小预判的方法,包括适用于图片类型的简单判断及利用ActiveX控件进行更全面的文件大小判断。还提供了一种针对多媒体文件的判断方案,通过设置HTML img标签的dynsrc属性动态获取文件路径并读取文件大小。

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>     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值