文件以二進流存入數據庫,且提供下載
上個星期做了一個內部郵件收發的,,且支持附件,,
爲了做好這個附件確實找了很多資料,求助了很多人,,現把代碼貼出來,供大家討論,完善,以方便那些需要之士,
表結構table name myfile: id,files(image),type(varchar(50)
上傳
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.IO;
public partial class Image : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Stream fileDataStream = FileUpload1.PostedFile.InputStream;
HttpPostedFile file = FileUpload1.PostedFile;
int fileLength = FileUpload1.PostedFile.ContentLength;
byte[] fileData = new byte[fileLength];
fileDataStream.Read(fileData, 0, fileLength); //把文件流填充到數組
string fileType = Path.GetExtension(FileUpload1.PostedFile.FileName);//得到文件擴展名
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings[ "DbConnectionString "].ToString());
cn.Open();
SqlCommand cmd = new SqlCommand( "insert myfile(files,type) values(@files,@type) ", cn);
cmd.Parameters.AddWithValue( "@files ", fileData);
cmd.Parameters.AddWithValue( "@type ", fileType);
cmd.ExecuteNonQuery();
cn.Close();
}
}
<head runat= "server ">
<title> 上傳文件到數據庫 </title>
</head>
<body>
<form id= "form1 " runat= "server " enctype= "multipart/form-data ">
<div>
<asp:FileUpload ID= "FileUpload1 " runat= "server " />
<asp:Button ID= "Button1 " runat= "server " Text= "Button " OnClick= "Button1_Click " /> </div>
</form>
</body>
下載
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.IO;
public partial class Image2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection cn = new SqlConnection( "server=.;uid=sa;pwd=sa;database=test; "); //數據庫鏈接
cn.Open();
SqlDataAdapter da2 = new SqlDataAdapter( "select * from myfile where id= 24 ", cn);//讀出庫中的第5條數據
DataSet ds2 = new DataSet();
da2.Fill(ds2);
byte[] b2 = (byte[])ds2.Tables[0].Rows[0][ "files "];
string type = (string)ds2.Tables[0].Rows[0][ "type "];
Response.Clear();
string Type = checktype(type);
Response.AddHeader( "Content-Disposition ", "attachment; filename=abc "+type);
Response.AddHeader( "Content-Length ", b2.Length.ToString());
Response.ContentType = Type;
Response.BinaryWrite(b2);
Response.End();
string FileName = ((LinkButton)sender).CommandArgument;
Response.Clear();
Response.ContentType = Type;
Response.AddHeader( "Content-Disposition ", "attachment;FileName= " + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8));
Response.WriteFile(FileName);
Response.End();
}
private string checktype(string filename)
{
string ContentType;
switch (filename.Substring(filename.LastIndexOf( ". ")).Trim().ToLower())
{
case ".asf ":
ContentType = "video/x-ms-asf ";
break;
case ".avi ":
ContentType = "video/avi ";
break;
case ".doc ":
ContentType = "application/msword "; break;
case ".zip ":
ContentType = "application/zip "; break;
case ".xls ":
ContentType = "application/vnd.ms-excel "; break;
case ".gif ":
ContentType = "image/gif "; break;
case ".jpg ":
ContentType = "image/jpeg "; break;
case "jpeg ":
ContentType = "image/jpeg "; break;
case ".wav ":
ContentType = "audio/wav "; break;
case ".mp3 ":
ContentType = "audio/mpeg3 "; break;
case ".mpg ":
ContentType = "video/mpeg "; break;
case ".mepg ":
ContentType = "video/mpeg "; break;
case ".rtf ":
ContentType = "application/rtf "; break;
case ".html ":
ContentType = "text/html "; break;
case ".htm ":
ContentType = "text/html "; break;
case ".txt ":
ContentType = "text/plain "; break;
default:
ContentType = "application/octet-stream ";
break;
}
return ContentType;
}
}
爲了做好這個附件確實找了很多資料,求助了很多人,,現把代碼貼出來,供大家討論,完善,以方便那些需要之士,
表結構table name myfile: id,files(image),type(varchar(50)
上傳
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.IO;
public partial class Image : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Stream fileDataStream = FileUpload1.PostedFile.InputStream;
HttpPostedFile file = FileUpload1.PostedFile;
int fileLength = FileUpload1.PostedFile.ContentLength;
byte[] fileData = new byte[fileLength];
fileDataStream.Read(fileData, 0, fileLength); //把文件流填充到數組
string fileType = Path.GetExtension(FileUpload1.PostedFile.FileName);//得到文件擴展名
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings[ "DbConnectionString "].ToString());
cn.Open();
SqlCommand cmd = new SqlCommand( "insert myfile(files,type) values(@files,@type) ", cn);
cmd.Parameters.AddWithValue( "@files ", fileData);
cmd.Parameters.AddWithValue( "@type ", fileType);
cmd.ExecuteNonQuery();
cn.Close();
}
}
<head runat= "server ">
<title> 上傳文件到數據庫 </title>
</head>
<body>
<form id= "form1 " runat= "server " enctype= "multipart/form-data ">
<div>
<asp:FileUpload ID= "FileUpload1 " runat= "server " />
<asp:Button ID= "Button1 " runat= "server " Text= "Button " OnClick= "Button1_Click " /> </div>
</form>
</body>
下載
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.IO;
public partial class Image2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection cn = new SqlConnection( "server=.;uid=sa;pwd=sa;database=test; "); //數據庫鏈接
cn.Open();
SqlDataAdapter da2 = new SqlDataAdapter( "select * from myfile where id= 24 ", cn);//讀出庫中的第5條數據
DataSet ds2 = new DataSet();
da2.Fill(ds2);
byte[] b2 = (byte[])ds2.Tables[0].Rows[0][ "files "];
string type = (string)ds2.Tables[0].Rows[0][ "type "];
Response.Clear();
string Type = checktype(type);
Response.AddHeader( "Content-Disposition ", "attachment; filename=abc "+type);
Response.AddHeader( "Content-Length ", b2.Length.ToString());
Response.ContentType = Type;
Response.BinaryWrite(b2);
Response.End();
string FileName = ((LinkButton)sender).CommandArgument;
Response.Clear();
Response.ContentType = Type;
Response.AddHeader( "Content-Disposition ", "attachment;FileName= " + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8));
Response.WriteFile(FileName);
Response.End();
}
private string checktype(string filename)
{
string ContentType;
switch (filename.Substring(filename.LastIndexOf( ". ")).Trim().ToLower())
{
case ".asf ":
ContentType = "video/x-ms-asf ";
break;
case ".avi ":
ContentType = "video/avi ";
break;
case ".doc ":
ContentType = "application/msword "; break;
case ".zip ":
ContentType = "application/zip "; break;
case ".xls ":
ContentType = "application/vnd.ms-excel "; break;
case ".gif ":
ContentType = "image/gif "; break;
case ".jpg ":
ContentType = "image/jpeg "; break;
case "jpeg ":
ContentType = "image/jpeg "; break;
case ".wav ":
ContentType = "audio/wav "; break;
case ".mp3 ":
ContentType = "audio/mpeg3 "; break;
case ".mpg ":
ContentType = "video/mpeg "; break;
case ".mepg ":
ContentType = "video/mpeg "; break;
case ".rtf ":
ContentType = "application/rtf "; break;
case ".html ":
ContentType = "text/html "; break;
case ".htm ":
ContentType = "text/html "; break;
case ".txt ":
ContentType = "text/plain "; break;
default:
ContentType = "application/octet-stream ";
break;
}
return ContentType;
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.