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

本文详细介绍了如何使用Visual Studio自带控件实现大文件上传,并通过修改配置文件扩大上传限制,接着阐述了如何将上传的文件存储到数据库中,包括文件的保存路径和SQL插入操作,最后展示了从数据库中读取数据并将其存为文件的过程。

一、大文件上传

文件上传用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();
        }

创建数据表脚本

ExpandedBlockStart.gif 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

 

源码下载

 

转载于:https://www.cnblogs.com/Xingsoft-555/archive/2012/04/01/2428992.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值