Mssql数据库中存储doc,pdf,exe,iso等电影文件和大文件上传

一、大文件上传

文件上传用vs自带的控件:FileUpLoad,默认上传大小4m。

<asp:FileUpload ID= " FileUpload1 " runat= " server " />

修改配置文件让FileUpload上传大于1GB的文件。

在system.web标签中添加httpRuntime,其中maxRequestLength的单位为KB

    <httpRuntime maxRequestLength= " 5242880 "/> 最大5G

 二、存贮数据

         if (FileUpload1.HasFile)
        {
             using (SqlConnection con =  new SqlConnection( " data source=.;database=test;uid=sa;pwd=123 "))
            {
                FileUpload1.SaveAs(Server.MapPath( " ~/f/ ")+FileUpload1.FileName);
                 byte[] buffer =  new  byte[FileUpload1.PostedFile.ContentLength];
                Stream s = FileUpload1.PostedFile.InputStream;
                s.Read(buffer,  0, buffer.Length);
                SqlCommand cmd =  new SqlCommand( " insert into t(msg,name) values(@msg,@name) ", con);
                cmd.Parameters.Add( " @msg ", SqlDbType.VarBinary).Value = buffer;
                cmd.Parameters.Add( " @name ", SqlDbType.VarChar).Value = FileUpload1.FileName;
                con.Open();
                cmd.CommandTimeout =  40;
                cmd.ExecuteNonQuery();
                con.Close();
            }
        }

三、从数据库中读出数据并存为文件

         using (SqlConnection con =  new SqlConnection( " data source=.;database=test;uid=sa;pwd=123 "))
        {
            SqlCommand cmd =  new SqlCommand( " select * from t where id= "+TextBox1.Text, con);
            con.Open();
            cmd.CommandTimeout =  40;
            SqlDataReader dr = cmd.ExecuteReader();
             while (dr.Read())
            {
                 byte[] bufer = ( byte[])dr[ " msg "];
                 string path=Server.MapPath( " ~/o/ ") + dr[ " name "].ToString();
                 if (File.Exists(path))
                {
                    File.Delete(path);
                }
                FileStream fs =  new FileStream(path, FileMode.Create);
                fs.Write(bufer,  0, bufer.Length);

                fs.Close();
            }
            dr.Close();
            con.Close();
        }

创建数据表脚本

View Code
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N ' [dbo].[t] ') AND type  in (N ' U '))
BEGIN
CREATE TABLE [dbo].[t](
    [id] [ int] IDENTITY( 1, 1) NOT NULL,
    [msg] [varbinary](max) NULL,
    [ex] [varchar]( 10) NULL,
    [name] [varchar]( 50) NULL
) ON [PRIMARY]
END

 

源码下载

 

你可能感兴趣的:(MSSQL)