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"))
{
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();
}
{
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
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