如何利用一个FILE控件,一次上传多个附件到数据库

类别:.NET开发 点击:0 评论:0 推荐:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Configuration;

 

namespace bjoffice
{
 /// <summary>
 /// upfiles 的摘要说明。
 /// </summary>
 public class upfiles : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.Button Button1;
  protected System.Web.UI.WebControls.Button Button2;
  protected System.Web.UI.WebControls.DropDownList files;
  protected System.Web.UI.HtmlControls.HtmlInputFile myFile;
  protected System.Web.UI.WebControls.Button Button3;
  protected static DataTable upfiles1;
  protected static SqlDataAdapter upfiles2;

  public void CreatTable()
  {
   SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
   SqlDataAdapter myCommand = new SqlDataAdapter("select FileName,FileType,FileLen,FileData,[ID] from Accessories where [ID]<-1", myConnection);   
   DataSet mydataset = new DataSet();
   myCommand.Fill(mydataset, "Accessoriestable");
   upfiles2 = myCommand;
   upfiles1 = mydataset.Tables["Accessoriestable"];
  }

  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
  }

  #region Web Form Designer generated code
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.Button1.Click += new System.EventHandler(this.Button1_Click);
   this.Button2.Click += new System.EventHandler(this.Button2_Click);
   this.Button3.Click += new System.EventHandler(this.Button3_Click);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

  private void Button1_Click(object sender, System.EventArgs e)
  {
   if (upfiles1 == null)
   {
    CreatTable();
   }
   if( myFile.PostedFile.FileName != "" )
   {
    string filename1 = Path.GetFileName(myFile.PostedFile.FileName) ;
    //if(upfiles1.Rows.Find(filename)==null)
    DataRow[] myrow=upfiles1.Select("FileName='"+filename1.ToString()+"'");
     if(myrow.Length ==0)
    {
     int filelen = myFile.PostedFile.ContentLength;
     string filetype = myFile.PostedFile.ContentType;
     Stream fstream = myFile.PostedFile.InputStream;
     byte[] filedata = new byte[filelen];         
     fstream.Read(filedata,0,filelen);

     DataRow dr = upfiles1.NewRow();
     dr[0] = filename1;
     dr[1] = filetype;
     dr[2] = filelen;
     dr[3] = filedata;
     upfiles1.Rows.Add( dr );
     files.DataSource = upfiles1;
     files.DataBind();

    }
   }
   else
   {
    Page.RegisterStartupScript("script", "<script>alert('请选择文件!');</script>");
   }

  }

  private void Button2_Click(object sender, System.EventArgs e)
  {
   if(files.SelectedIndex>=0)
   {
    string fname=files.SelectedItem.Text;
    DataRow[] myrow=upfiles1.Select("FileName='"+fname+"'");
    if(myrow.Length>0)
     upfiles1.Rows.Remove(myrow[0]);
    files.DataSource=upfiles1;
    files.DataBind();
   }
   else
   {
    Page.RegisterStartupScript("script", "<script>alert('请选择文件!');</script>");
   }

  }

  private void Button3_Click(object sender, System.EventArgs e)
  {
   if( upfiles1.Rows.Count > 0 )
   {
       SqlCommandBuilder myscb =new SqlCommandBuilder(upfiles2);
                upfiles2.InsertCommand=myscb.GetInsertCommand();
                upfiles2.Update(upfiles1);
   }
   upfiles1 = null;
  }

  }
 }

本文地址:http://com.8s8s.com/it/it45538.htm