在.net中上传文件完全揭秘

先在前台页面里添加如下代码:

<form id="Form1" method="post" encType="multipart/form-data" runat="server" οnsubmit="return getFileSize(document.all('fileup').value)">
<INPUT id="fileup"  type="file" size="80" name="fileup" onpropertychange="getFileSize(this.value)" runat="server">
〈/form>
 


第一步:先设置web.config
 <system.web>
  <!--设置要上传的文件大小
   executionTimeout:表示允许执行请求的最大时间限制,单位为秒。
  
   maxRequestLength:指示 ASP.NET 支持的最大文件上载大小。
   该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。
   指定的大小以 KB 为单位。默认值为 4096 KB (4 MB)。
  
   useFullyQualifiedRedirectUrl:表示指示客户端重定向是否是完全限定的
  (采用 "http://server/path" 格式,这是某些移动控件所必需的),或者指示是否代之以将相对重定向发送到客户端。
   如果为 True,则所有不是完全限定的重定向都将自动转换为完全限定的格式。false 是默认选项。
  
   minFreeThreads:表示指定允许执行新请求的自由线程的最小数目。
   ASP.NET 为要求附加线程来完成其处理的请求而使指定数目的线程保持自由状态。默认值为 8。
  
  minLocalRequestFreeThreads:表示ASP.NET 保持的允许执行新本地请求的自由线程的最小数目。
  该线程数目是为从本地主机传入的请求而保留的,以防某些请求在其处理期间发出对本地主机的子请求。
  这避免了可能的因递归重新进入 Web 服务器而导致的死锁。
 
  appRequestQueueLimit:表示ASP.NET 将为应用程序排队的请求的最大数目。
  当没有足够的自由线程来处理请求时,将对请求进行排队。当队列超出了该设置中指定的限制时,
  将通过“503 - 服务器太忙”错误信息拒绝传入的请求。
 
  enableVersionHeader:表示指定 ASP.NET 是否应输出版本标头。
  Microsoft Visual Studio 2005 使用该属性来确定当前使用的 ASP.NET 版本。
  对于生产环境,该属性不是必需的,可以禁用。
 
  -->
  <httpRuntime executionTimeout="180" maxRequestLength="102400" useFullyQualifiedRedirectUrl="false"
  minFreeThreads="15"  minLocalRequestFreeThreads="10" appRequestQueueLimit="100"  enableVersionHeader="true"/>

</system.web>

 第二步:

javascript:判断上传文件大小
 <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=30*1024;  //设置上传的文件最大值(单位: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>


第三步:

后台cs文件内容:

using System.IO;//引用命名空间
private void Button1_Click(object sender, System.EventArgs e)
{
 string sqlconn=Session["str_connection"].ToString();
 SqlConnection myconn=new SqlConnection(sqlconn);
 string yunxinghuanjing="";
 for(int i=0;i<=huanjing.Items.Count-1;i++)//运行环境
 if(huanjing.Items[i].Selected)
 yunxinghuanjing=yunxinghuanjing+" "+huanjing.Items[i].Value;

 if (fileup.PostedFile.ContentLength==0)
 this.RegisterStartupScript("tishi","<script>alert('你没有选择要上载的文件或者上传的文件长度为0!')</script>");
   
 else if((this.fileup.PostedFile.ContentLength /1024)>(1024*30))//如果上传的文件大于30mb
 {
 Response.Write("<script>alert('对不起,上传的最大文件只允许为30MB //n 你的文件超过限制!');</script>");
 }
   
 else
 {
 //Response.Write(fileup.PostedFile.ToString()+"<br>");
 //Response.Write(fileup.PostedFile.FileName.ToString()+"<br>");
    
 string filename,path;
 filename=Path.GetFileName(fileup.PostedFile.FileName);//文件名(包括扩展名)
 path=Server.MapPath("soft/");//soft的绝对路径
 if( Directory.Exists(path)==false)//如果此文件夹不存在(给定的路径是否引用了盘上的现有目录)
 Directory.CreateDirectory (path) ;//创建此文件夹(按给定的path创建目录)
 path+=filename;                         //上传后的路径和文件全名
 if( File.Exists(path)==true)//如果文件存在
 {
  this.RegisterStartupScript("fileExit","<script>alert('该文件已经存在!')</script>");
 }
 else
 {
  fileup.PostedFile.SaveAs(path);//保存文件
  string sqlstr="Insert into product

(product_name,attachfile,attachfileext,lujin,counter,gongneng,shijian,kind,yunxinghuanjing,shouquanfangshi,renqi,pingjia,daxi

ao,yuyan,jieshao) "+"values('"+name.Text+"','"+filename+"','"+fileup.PostedFile.ContentType.ToString()

+"','soft/',1,'"+gongneng.Text +"','"+DateTime.Now+"',"+"'"+leixing.SelectedValue+"','"+yunxinghuanjing

+"','"+shouquan.SelectedValue+"',0,1,'"+fileup.PostedFile.ContentLength.ToString()

+"','"+yuyan.SelectedValue+"','"+jieshao.Text +"')";
SqlCommand  mycomm=new SqlCommand(sqlstr,myconn);
     
}
}
    
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值