CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

一个烦琐的多文件上传的问题!急死我了~~~~

楼主h520(影子)2003-06-03 13:44:50 在 .NET技术 / ASP.NET 提问

一个多文件上传的程序,老是出问题,但小弟技术低廉,所以一直解决不了,高手们帮帮我,,代码如下:  
   
  -------------------------------   Aspx   Page   --------------------------------  
   
   
  <form   id="form1"   method="post"   encType="multipart/form-data"   runat="server">  
  <asp:panel   id="Panel1"   runat="server"   Visible="False"   Height="158px"   Width="100%">  
  <P   align="center">上传附件</P>  
  <TABLE   class="f12"   id="Table1"   cellSpacing="0"   borderColorDark="buttonhighlight"   cellPadding="4"   align="center"   borderColorLight="buttontext"   border="1">  
  <TR>  
  <TD><FONT   color="#ffffff">请选择上传文件:</FONT></TD>  
  </TR><TR>  
  <TD   align="middle">  
  <INPUT   class="from"   id="myFile"   style="WIDTH:   238px;   HEIGHT:   22px"   type="file"   maxLength="50"   size="20"   name="myFile"   runat="server"></TD>  
  </TR>  
  <TR>  
  <TD><FONT   color="#ffffff">已选择的上传文件列表:</FONT></TD>  
  </TR>  
  <TR>  
  <TD   align="middle">  
  <INPUT   class="from"   id="Button1"   type="button"   value="添加到列表"   name="Button1"   runat="server">  
  <asp:dropdownlist   id="files"   runat="server"   CssClass="SELECT"></asp:dropdownlist>  
  <INPUT   class="from"   id="Button2"   type="button"   value="移走文件"   name="Button2"   runat="server">  
  </TD>  
  </TR>  
  <TR>  
  <TD><FONT   color="#ffffff">注意:上传文件大小限制在4M以下!</FONT></TD>  
  </TR>  
  <TR>  
  <TD   align="middle">  
  <INPUT   id="Button3"   style="WIDTH:   440px;   HEIGHT:   22px"   type="button"   value="上         传         全         部         文         件"   name="Button3"   runat="server"></TD>  
  </TR>  
  <TR   id="shouone"   runat="server">  
  <TD   align="cneter"   colSpan="2">  
  <TABLE   class="f12"   id="Table2"   cellSpacing="0"   cellPadding="0"   width="100%"   border="0">  
  <TR>  
  <TD   align="middle"   colSpan="2"><B><SPAN   id="Span1"   runat="server"></B></SPAN></TD>  
  <TR>  
  </TR>  
  <TR>  
  <TD>文件个数   :</TD>  
  <TD>  
  <asp:label   id="fcount"   runat="server"   text=""></asp:label></TD>  
  </TR>  
  <TR>  
  <TD>文件名称   :</TD>  
  <TD>  
  <asp:label   id="fname"   runat="server"   text=""></asp:label></TD>  
  </TR>  
  <TR>  
  <TD>文件类型   :</TD>  
  <TD>  
  <asp:label   id="fenc"   runat="server"></asp:label></TD>  
  </TR>  
  <TR>  
  <TD>文件大小   :(字节)</TD>  
  <TD>  
  <asp:label   id="fsize"   runat="server"></asp:label></TD>  
  </TR>  
  </TABLE>  
  </TD></TR>  
  </TABLE>  
  </asp:panel></form>  
   
  --------------------------------   CS   Page   ---------------------------------  
   
   
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  TABLE1.Visible   =   false;  
  Panel1.Visible   =   true;  
  upfiles   =   new   DataTable("upfile");  
  DataColumn[]   keys   =   new   DataColumn[1];  
  keys[0]   =   upfiles.Columns.Add("filename",typeof(string));  
  keys[0].AllowDBNull   =   false; //   列   keys[0]   是否允许为空值  
  keys[0].Unique   =   true; //   指示   列   keys[0]   的是否为唯一值  
  upfiles.PrimaryKey   =   keys;  
  upfiles.Columns.Add("fileSize",typeof(Int32));  
  upfiles.Columns.Add("filestream",typeof(byte[]));  
  upfiles.Columns.Add("fileExt",typeof(string));  
  upfiles.Columns.Add("regdate",typeof(string));  
  upfiles.Columns.Add("fileclass",typeof(string));  
  Span1.InnerHtml   =   "";  
  fcount.Text   =   "";  
  fname.Text   =   "";  
  fsize.Text   =   "";  
  }  
  private   void   Button3_ServerClick(object   sender,   System.EventArgs   e)  
  {  
  DataClass   dc   =   new   DataClass();  
  fcount.Text   =   upfiles.Rows.Count.ToString();  
  if(   upfiles.Rows.Count   >   0   )    
  {  
  fname.Text   =   "";  
  fsize.Text   =   "";  
  for(   int   j   =   0;   j   <   upfiles.Rows.Count;   j   ++   )  
  {  
  DataRow   dr   =   upfiles.Rows[j];  
  //获取一个递增的UpFileID值  
  string   id   =   dc.SelectTableIndex("UpFile",   "ID");  
  InsertRecordImg(id,   (byte[])dr[2],   (string)dr[0],   (string)dr[3],   (int)dr[1],   (string)dr[4],   (string)dr[5]);  
  }  
  Response.Redirect("admin/DataFrom.aspx?PID="+   Request.QueryString["PID"]+"&UpID="+Request.QueryString["UpID"]+"");  
  }  
  upfiles   =   null;   //   清空对象内容  
  }  
   
  private   void   Button1_ServerClick(object   sender,   System.EventArgs   e)  
  {  
  if(   myFile.PostedFile   !=   null   ||   myFile.PostedFile.FileName   !=   ""   )  
  {  
  //定义一个视图  
  Stream   imgStream;  
  DataClass   dc   =   new   DataClass();  
  string   nam   =   myFile.PostedFile.FileName;    
  int   i   =   nam.LastIndexOf("\\");  
  //获取文件名  
  string   filename   =   nam.Substring(i+1)   ;  
  if(upfiles.Rows.Find(filename)==null)  
  {  
  //--获取文件大小  
  int   fileSize   =   myFile.PostedFile.ContentLength;  
  //--获取扩展名  
  string   fileExt   =   myFile.PostedFile.ContentType;  
  //--创建日期  
  string   regdate   =   dc.RegDate;  
  //上传的所属类型  
  string   fileclass   =   "file";  
  //获取文件的内容  
  imgStream     =   myFile.PostedFile.InputStream;  
  byte[]   imgBinaryData=new   byte[fileSize];  
  int   n   =   imgStream.Read(imgBinaryData,   0,   fileSize);  
   
  DataRow   dr   =   upfiles.NewRow();  
  dr[0]   =   filename; //设置为文件名  
  dr[1]   =   fileSize; //设置为文件大小  
  dr[2]   =   imgBinaryData; //设置为文件内容  
  dr[3]   =   fileExt; //设置为文件扩展名  
  dr[4]   =   regdate; //设置为文件创建日期  
  dr[5]   =   fileclass.Trim(); //设置为上传的所属类型  
  upfiles.Rows.Add(   dr   ); //   往数据表   upfiles   里面增加新行内容  
   
   
  //   将文件绑定到   DropDownList   上  
  ArrayList   dc2   =   new   ArrayList();  
  for(   int   j   =   0;   j   <   upfiles.Rows.Count;   j   ++   )  
  {  
  DataRow   df   =   upfiles.Rows[j];  
  dc2.Add(   df[0].ToString()   );  
  }  
  files.DataSource   =   dc2;  
  files.DataBind();  
  }  
  }  
  else  
  {  
  Span1.InnerHtml   =   "<font   color='red'>请选择文件!</font>";  
  }  
  }  
   
   
  private   void   Button2_ServerClick(object   sender,   System.EventArgs   e)  
  {  
  if(   files.SelectedItem.Value   !=   null   ||   files.SelectedItem.Value   !=   ""   )  
  {  
  string   fname=files.SelectedItem.Value;    
  DataRow   foundRow=   upfiles.Rows.Find(fname);  
  if(foundRow!=null)  
  upfiles.Rows.Remove(foundRow);  
   
  //   移除文件后,重新绑定   DropDownList  
  ArrayList   dc=new     ArrayList();  
  for(int   j=0;j<upfiles.Rows.Count;j++)  
  {  
  DataRow   df=upfiles.Rows[j];  
  dc.Add(   df[0].ToString()   );  
  }  
  files.DataSource=dc;  
  files.DataBind();  
  }  
  else  
  {  
  Span1.InnerHtml   ="<font   color=red>请选择文件!</font>";  
  }  
  }  
   
   
   
   
  #region   *****   上传到数据库   *****  
   
  public   void   InsertRecordImg(string   id,   byte[]   image,   string   filenamev,   string   fileExt,   int   fileSize,   string   regdate,   string   fileclass)  
  {  
  using(SqlConnection   Conn=new   SqlConnection(   ConfigurationSettings.AppSettings["strConn"]   ))  
  {  
  if(Conn.State!=System.Data.ConnectionState.Open)   Conn.Open();  
  SqlCommand   Cmd   =   new   SqlCommand();  
  Cmd.Connection=Conn;  
  Cmd.CommandText   =   "   Insert   into   UpFile(id,   FileData,   FileName,   FileExt,   FileSize,   Regdate,   FileClass)   Values(@id,   @image,   @filenamev,   @fileExt,   @fileSize,   @regdate,   @fileclass)   ";  
   
  SqlParameter   _id=new   SqlParameter("@id",System.Data.SqlDbType.Int);  
  _id.Value=id;  
  Cmd.Parameters.Add(_id);  
   
  SqlParameter   Image=new   SqlParameter("@image",System.Data.SqlDbType.Image);  
  Image.Value=image;  
  Cmd.Parameters.Add(Image);  
   
  SqlParameter   Filenamev   =new   SqlParameter("@filenamev",System.Data.SqlDbType.VarChar);  
  Filenamev.Value=filenamev;  
  Cmd.Parameters.Add(Filenamev);  
   
  SqlParameter   FileExt   =new   SqlParameter("@fileExt",System.Data.SqlDbType.Char);  
  FileExt.Value=fileExt;  
  Cmd.Parameters.Add(FileExt);  
   
  SqlParameter   FileSize   =new   SqlParameter("@fileSize",System.Data.SqlDbType.Int);  
  FileSize.Value=fileSize;  
  Cmd.Parameters.Add(FileSize);  
   
  SqlParameter   _regdate   =new   SqlParameter("@regdate",System.Data.SqlDbType.DateTime);  
  _regdate.Value=regdate;  
  Cmd.Parameters.Add(_regdate);  
   
  SqlParameter   _fileclass   =new   SqlParameter("@fileclass",System.Data.SqlDbType.Char);  
  _fileclass.Value=fileclass;  
  Cmd.Parameters.Add(_fileclass);  
   
  Cmd.ExecuteNonQuery();  
  }  
  }  
   
  #endregion 问题点数:80、回复次数:9Top

1 楼h520(影子)回复于 2003-06-03 14:05:52 得分 0

高手来帮我下三。Top

2 楼h520(影子)回复于 2003-06-03 14:14:28 得分 0

高人帮我下嘛。。。。。。。。。。。。Top

3 楼lionzhf(忆昔)回复于 2003-06-03 14:18:11 得分 80

你可以搜索一下的,以前有多文件上传Top

4 楼h520(影子)回复于 2003-06-03 14:21:37 得分 0

我知道想找到这个问题出在那儿。这样才可以提升自己嘛。Top

5 楼h520(影子)回复于 2003-06-03 14:22:53 得分 0

lionzhf(忆昔)   。。。你QQ,我加你,你怎么不让我进。。。  
   
  还有,老哥,你帮我调试一下上边的那代码到底那儿出的问题,好吗!Top

6 楼h520(影子)回复于 2003-06-03 14:47:47 得分 0

那位比较空闲的高手,帮我一下嘛。。!!!Top

7 楼namelb(是大海吗)回复于 2003-06-03 20:48:55 得分 0

首先用.net单步调试出错的行,如果是数据库错再打印出数据库的错就是了。Top

8 楼ilqtj(飞天)回复于 2003-06-03 20:55:27 得分 0

http://expert.csdn.net/Expert/topic/1807/1807751.xml?temp=.9315302  
   
  存储过程  
   
  CREATE   PROCEDURE   Teacher_Insert  
  (@name   char(30),  
  @password   char(30),  
  @gender   char(2),  
  @birthday   datetime,  
  @headship   varchar(100),  
  @departmentname   nvarchar(5),  
  @picture   image,  
  @instruction   text,  
  @task   text   ,  
  @workplace   char(50) ,  
  @telephone   char(20),  
  @email   char(30),  
  @taskpic1   image,  
  @taskpic2   image   ,  
  @degree   char(50),  
  @job   char(50)   ,  
  @other   text,  
  @model   bit  
  )  
   
   
  AS  
   
  /*作者:   吴福贵  
      时间:   2003-04-16    
      功能:   用于添加教师资料  
      参数:    
  @name   char(30),  
  @gender char(2),  
  @birthday datetime,  
  @headship   varchar(100),  
  @picture image,  
  @instruction   text,  
  @pretask text   ,  
  @taskdirection   varchar(500)   ,  
  @task   text   ,  
  @workplace   char(50) ,  
  @telephone   char(20),  
  @email   char(30),  
  @books   text,  
  @other   text,  
  @model   bit  
      返回值:  
      -001001:   用户名存在    
      -001002:   姓名为空  
      -001003:性别为空  
      -001004:添加:状态为空  
      -001005:   密码为空  
      1:添加文件夹或文件成功  
  */  
      if   @name   =''    
      begin  
          return   -001002    
      end  
       
      if   @gender=   ''  
          begin  
              /*返回性别为空错误代码*/  
              return   -001003  
          end  
      if   @model   is   null  
          begin  
              /*返回状态为空错误代码*/  
              return   @model     /*-001003*/  
          end  
      if   @password   is   null  
          begin  
              /*返回状态为空错误代码*/  
              return   -001005  
          end  
      if   exists(select   *   from   Teacher   where   name=@name   )  
      begin  
          /*   返回用户名存在错误代码   */  
          return   -001001  
      end  
   
      insert   Teacher   (name,password,gender,birthday,headship,departmentname,picture,instruction,task,workplace,  
      telephone,email,taskpic1,taskpic2,degree,job,other)  
                        values(@name,@password,@gender,@birthday,@headship,@departmentname,@picture,@instruction,@task,@workplace,  
      @telephone,@email,@taskpic1,@taskpic2,@degree,@job   ,@other)  
          return   1;  
  GO  
   
   
  你把那个存储过程类添加到你的工程里剩下的很简单了Top

9 楼ljj77(小妖)回复于 2003-06-03 21:20:16 得分 0

可以用try,catch测一下,把错误打出来,或者用单步调试...Top

相关问题

  • 急死了, 为什么我用几个文件上传组件上传文件时都不能传大于200k的文件啊
  • PDF文件打开看不到文章,急死我了!
  • 为什么我找不到xinetd.conf文件啊??急死我了!!!
  • 急死了!!同事把我的文本文件给覆盖了
  • 用API删除文件的问题,急死人了
  • 布署.NET程序!!.wsi文件是什么呀??急死!
  • 关于写文件的一个问题,急死了!
  • SQL Server 2000数据库文件附加的问题(急死了)!
  • 传值问题。。急死我了。。
  • winform 下如何访问网络目录文件(语言VB.NET)??????????急死我了

关键词

  • .net
  • 文件
  • upfile
  • filenamev
  • fileclass
  • regdate
  • foundrow
  • fileext
  • typeof
  • filesize

得分解答快速导航

  • 帖主:h520
  • lionzhf

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo