文件以二进制流保存到DB及Download(转)
把音频文件上传到数据库,然后读取出来播放:
表名: myfile; 表字段: id(int), Content(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(); //连接数据库 cn.Open(); SqlCommand cmd = new SqlCommand( "insert myfile(Content,Type) values(@Content,@Type) ", cn); cmd.Parameters.AddWithValue( "@Content ", fileData); cmd.Parameters.AddWithValue( "@Type ", fileType); cmd.ExecuteNonQuery(); cn.Close(); } }
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();//数据库链接 cn.Open(); SqlDataAdapter da2 = new SqlDataAdapter( "select * from myfile where id= 24 ", cn);//读出数据库中相应的数据 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=”下载”+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(); } //根据文件的扩展名来获取对应的“输出流的HTTP MIME“类型 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; } }