文件以二进制流保存到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;
         }
 } 
原文地址:https://www.cnblogs.com/dennys/p/3587687.html