文:黎承湘

 

为了实现此功能,查阅不少资料,发过不少求助信息,现整理出来,以供有需人士查阅.

 

表名: myfile; 表字段: id(int), Content(image),Type(varchar(50))

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

 

   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;
        }

 

注:这是请教一个达人找到的。在网上四处找寻把音频文件上传到数据库,然后读取出来播放,一直没结果。

特放上做为记录

相关文章: