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

原创 2003年07月03日 14:04:00

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;
  }

  }
 }

实现用File控件同时上传多个文件

 File控件是一个必须结合服务器端功能才能实现的纯客户端控件。要使得文件上载能够成功,要做到以下几点: INPUT type=file 元素必须出现在 FORM 元素内。 必须为 I...
  • lock0812
  • lock0812
  • 2007年08月20日 11:19
  • 9038

上传多个附件的js写法

functioin addMore(){ var td =document.getElementById("more"); var br = document.createElement("br"...
  • zztp01
  • zztp01
  • 2009年10月12日 14:03
  • 534

C#中实现同时上传多个附件

添加多个附件的方法是先创建一个临时文件夹,把待上传的文件放在临时文件夹内,然后一并移动到确定的目录中。添加按钮的代码///   /// 添加多个附件  ///   ///   ///   privat...
  • anglexiaoher
  • anglexiaoher
  • 2011年01月14日 11:32
  • 5111

多文件上传(一个FileUpload 实现上传多个文件)

          写一个表示文件的类(CustomFile)来保存上传文件的相关信息。 类定义,FileBytes是二进制文件的数据类型byte[],FileContentType文件MIME类型,...
  • liuhuan2099
  • liuhuan2099
  • 2007年09月21日 16:01
  • 9377

file文件添加change事件,结合ajaxFileUpload使用文件上传只生效一次问题解决

$("#gateFile_AOP").change(function(){ fileChange(); }); function fileChange(){ $.ajaxFileUpload(...
  • qq_23285003
  • qq_23285003
  • 2017年01月12日 14:03
  • 563

html中input上传多个文件

如何使用html上传多个文件呢?我搜索中文怎么也找不到合适的,都是用js动态添加input,然后提交,不能满足我想要的——打开选择文件的窗口后可以一次性选择多个文件。 然后我尝试搜索英文"html ...
  • godha
  • godha
  • 2013年10月22日 15:55
  • 17583

实现一次将多个文件上传到hdfs

实现一次将多个文件上传到hdfs
  • kezhong_wxl
  • kezhong_wxl
  • 2017年08月02日 11:47
  • 419

Bootstrap的fileinput插件实现多文件上传的方法

*1.bootstrap-fileinput 插件git下载地址 https://github.com/kartik-v/bootstrap-fileinput.git 2.解决使用boo...
  • u010486495
  • u010486495
  • 2016年10月02日 12:23
  • 3908

WEB版一次选择多个文件进行批量上传(Plupload)的解决方案

原文链接 说明:Plupload支持多种浏览器,多种上传方式!       一般的WEB方式文件上传只能使用FileUpload控件进行一个文件一个文件的进行上传,就算是批量上传,也要...
  • xiakepan
  • xiakepan
  • 2015年05月12日 09:02
  • 3078

Discuz!教程之论坛上传图片上传附件只能一个一个的添加不能批量上传的解决办法

由于近期浏览器普遍更新默认禁止flash运行,导致很多站长反馈出现论坛上传图片上传附件无法批量上传,只能一个一个的添加的问题,现在以chrome为例,整理一个解决办法:点击浏览器地址栏左侧(i)图标:...
  • lih062624
  • lih062624
  • 2017年12月28日 09:27
  • 2621
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何利用一个FILE控件,一次上传多个附件到数据库
举报原因:
原因补充:

(最多只允许输入30个字)