ASP.NET中上传文件到数据库

发表于:2007-06-30来源:作者:点击数: 标签:
CREATE TABLE tblBooksUpload ( DocID int NOT NULL IDENTITY Primary Key , DocTitle varchar (200) , Doc image, DocType varchar (50) , Entrydate datetime Default GetDate() ) ************************************ CREATE PROCEDURE uSP_BooksUploadF
CREATE TABLE tblBooksUpload

(

DocID int NOT NULL IDENTITY Primary Key ,

DocTitle varchar (200) ,

Doc image,

DocType varchar (50) ,

Entrydate datetime Default GetDate()

)

************************************
CREATE PROCEDURE uSP_BooksUploadFile

@Title varchar(200),

@Doc image,

@DocType varchar(4)

AS

INSERT tblBooksUpload(DocTitle,Doc,DocType)

VALUES (@Title,@Doc,@DocType)

GO



*********************************
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
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.Data.SqlClient;


namespace WebApplication200501
{
/// <summary>
/// WebForm3_Ftp 的摘要说明。
/// </summary>
public class WebForm3_Ftp : System.Web.UI.Page
{
protected System.Web.UI.HtmlControls.HtmlInputFile ftpfiles;
protected System.Web.UI.WebControls.Label LabelStat;
protected System.Web.UI.WebControls.TextBox TextBoxFileName;
protected System.Web.UI.WebControls.Label Label1;
protected System.Data.SqlClient.SqlDataAdapter sqlDataAdapter1;
protected System.Data.SqlClient.SqlConnection sqlConnection1;
protected System.Data.SqlClient.SqlCommand sqlSelectCommand1;
protected System.Data.SqlClient.SqlCommand sqlInsertCommand1;
protected System.Data.SqlClient.SqlCommand sqlUpdateCommand1;
protected System.Data.SqlClient.SqlCommand sqlDeleteCommand1;
protected System.Web.UI.WebControls.Button Button1;

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

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter();
this.sqlConnection1 = new System.Data.SqlClient.SqlConnection();
this.sqlSelectCommand1 = new System.Data.SqlClient.SqlCommand();
this.sqlInsertCommand1 = new System.Data.SqlClient.SqlCommand();
this.sqlUpdateCommand1 = new System.Data.SqlClient.SqlCommand();
this.sqlDeleteCommand1 = new System.Data.SqlClient.SqlCommand();
this.Button1.Click += new System.EventHandler(this.Button1_Click);
//
// sqlDataAdapter1
//
this.sqlDataAdapter1.DeleteCommand = this.sqlDeleteCommand1;
this.sqlDataAdapter1.InsertCommand = this.sqlInsertCommand1;
this.sqlDataAdapter1.SelectCommand = this.sqlSelectCommand1;
this.sqlDataAdapter1.TableMappings.AddRange(new System.Data.Common.DataTableMapping[] {
new System.Data.Common.DataTableMapping("Table", "tblBooksUpload", new System.Data.Common.DataColumnMapping[] {
new System.Data.Common.DataColumnMapping("DocID", "DocID"),
new System.Data.Common.DataColumnMapping("DocTitle", "DocTitle"),
new System.Data.Common.DataColumnMapping("Doc", "Doc"),
new System.Data.Common.DataColumnMapping("DocType", "DocType"),
new System.Data.Common.DataColumnMapping("Entrydate", "Entrydate")})});
this.sqlDataAdapter1.UpdateCommand = this.sqlUpdateCommand1;
//
// sqlConnection1
//
this.sqlConnection1.ConnectionString = "workstation id=\"DAYANG-C\";packet size=4096;integrated security=SSPI;data source=\"" +
"DAYANG-C\";persist security info=False;initial catalog=MyDb";
//
// sqlSelectCommand1
//
this.sqlSelectCommand1.CommandText = "[NewSelectCommand]";
this.sqlSelectCommand1.CommandType = System.Data.CommandType.StoredProcedure;
this.sqlSelectCommand1.Connection = this.sqlConnection1;
this.sqlSelectCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, false, ((System.Byte)(0)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
//
// sqlInsertCommand1
//
this.sqlInsertCommand1.CommandText = "[NewInsertCommand]";
this.sqlInsertCommand1.CommandType = System.Data.CommandType.StoredProcedure;
this.sqlInsertCommand1.Connection = this.sqlConnection1;
this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, false, ((System.Byte)(0)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@DocTitle", System.Data.SqlDbType.VarChar, 200, "DocTitle"));
this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Doc", System.Data.SqlDbType.VarBinary, 2147483647, "Doc"));
this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@DocType", System.Data.SqlDbType.VarChar, 50, "DocType"));
this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Entrydate", System.Data.SqlDbType.DateTime, 8, "Entrydate"));
//
// sqlUpdateCommand1
//
this.sqlUpdateCommand1.CommandText = "[NewUpdateCommand]";
this.sqlUpdateCommand1.CommandType = System.Data.CommandType.StoredProcedure;
this.sqlUpdateCommand1.Connection = this.sqlConnection1;
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, false, ((System.Byte)(0)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@DocTitle", System.Data.SqlDbType.VarChar, 200, "DocTitle"));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Doc", System.Data.SqlDbType.VarBinary, 2147483647, "Doc"));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@DocType", System.Data.SqlDbType.VarChar, 50, "DocType"));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Entrydate", System.Data.SqlDbType.DateTime, 8, "Entrydate"));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_DocID", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "DocID", System.Data.DataRowVersion.Original, null));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_DocTitle", System.Data.SqlDbType.VarChar, 200, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "DocTitle", System.Data.DataRowVersion.Original, null));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_DocType", System.Data.SqlDbType.VarChar, 50, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "DocType", System.Data.DataRowVersion.Original, null));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_Entrydate", System.Data.SqlDbType.DateTime, 8, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Entrydate", System.Data.DataRowVersion.Original, null));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@DocID", System.Data.SqlDbType.Int, 4, "DocID"));
//
// sqlDeleteCommand1
//
this.sqlDeleteCommand1.CommandText = "[NewDeleteCommand]";
this.sqlDeleteCommand1.CommandType = System.Data.CommandType.StoredProcedure;
this.sqlDeleteCommand1.Connection = this.sqlConnection1;
this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, false, ((System.Byte)(0)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_DocID", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "DocID", System.Data.DataRowVersion.Original, null));
this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_DocTitle", System.Data.SqlDbType.VarChar, 200, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "DocTitle", System.Data.DataRowVersion.Original, null));
this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_DocType", System.Data.SqlDbType.VarChar, 50, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "DocType", System.Data.DataRowVersion.Original, null));
this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_Entrydate", System.Data.SqlDbType.DateTime, 8, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Entrydate", System.Data.DataRowVersion.Original, null));
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void Button1_Click(object sender, System.EventArgs e)
{
//if(ftpfiles.PostedFile!=null)
//{
// try
// {
// ftpfiles.PostedFile.SaveAs("c:\\"+TextBoxFileName.Text);
// LabelStat.Text="上传文件成功!";
// }
// catch(Exception exc)
// {
// LabelStat.Text="上传过程中出错!"+exc.ToString();
// }
//}
string s;

string strDocExt;

//strDocType用于保存上传文件的类型

string strDocType;


//用于保存文件大小

int intDocLen;


//Stream用于读取上传数据

Stream objStream;


SqlConnection BooksConn;

SqlCommand cmdUploadDoc;


if(IsValid)

{

if(ftpfiles.PostedFile != null)

{

//文件类型


strDocExt = ftpfiles.PostedFile.FileName.ToLower();

switch(strDocExt)

{

case ".doc":

strDocType = "doc";

break;


case ".ppt":

strDocType = "ppt";

break;


case ".htm":

strDocType = "htm";

break;


case ".html":

strDocType = "htm";

break;


case ".jpg":

strDocType = "jpg";

break;


case ".gif":

strDocType = "gif";

break;


default:

strDocType = "txt";

break;

}

//上传文件具体内容


intDocLen = ftpfiles.PostedFile.ContentLength;

byte[] Docbuffer = new byte[intDocLen];


objStream = ftpfiles.PostedFile.InputStream;


//文件保存到缓存

//缓存将保存到数据库

objStream.Read(Docbuffer ,0,intDocLen);


BooksConn = new

SqlConnection("Server =dayang-c;Integrated Security=SSPI;Database=mydb");



cmdUploadDoc = new

SqlCommand("uSP_BooksUploadFile",BooksConn);

cmdUploadDoc.CommandType = CommandType.StoredProcedure;

cmdUploadDoc.Parameters.Add("@Title ",SqlDbType.VarChar,200);

cmdUploadDoc.Parameters.Add("@Doc",SqlDbType.Image);

cmdUploadDoc.Parameters.Add("@DocType",SqlDbType.VarChar,4);

cmdUploadDoc.Parameters[0].Value = TextBoxFileName.Text;

cmdUploadDoc.Parameters[1].Value = Docbuffer ;

cmdUploadDoc.Parameters[2].Value = strDocType;


BooksConn.Open();

cmdUploadDoc.ExecuteNonQuery();

BooksConn.Close();
}
}
LabelStat.Text="上传文件成功!";

}
}

}



原文转自:http://www.ltesting.net