Public Shared Function DownloadFile( _ ByVal Server As HttpServerUtility, _ ByVal Response As HttpResponse, _ ByVal strFileName As String) As Boolean Const adTypeBinary = 1 Dim strSql As String Dim strFilePath, strFileSize, strDownloadFileName, strFileType As String Dim objFileInfo As FileInfo Try strFileType = LCase(Right(strFileName, 4)) strDownloadFileName = strFileName.Substring(strFileName.LastIndexOf("\") + 1) objFileInfo = New FileInfo(strFileName) strFileSize = objFileInfo.Length.ToString() Dim objStream As Object = Server.CreateObject("ADODB.Stream") objStream.Type = adTypeBinary objStream.Open() objStream.LoadFromFile(strFileName) Response.AddHeader("Content-Disposition", "attachment; filename=" & strDownloadFileName) Select Case strFileType Case ".doc" Response.ContentType = "application/msword" Case ".zip" Response.ContentType = "application/save" Case ".xls" Response.ContentType = "application/ms-excel" Case ".pdf" Response.ContentType = "application/save" Case ".gif" Response.ContentType = "image/gif" Case ".jpg", "jpeg" Response.ContentType = "image/jpeg" Case ".wav" Response.ContentType = "audio/wav" Case ".mp3" Response.ContentType = "audio/mpeg3" Case ".mpg", "mpeg" Response.ContentType = "video/mpeg" Case ".rtf" Response.ContentType = "application/rtf" Case Else Response.ContentType = "application/save" End Select Response.AddHeader("Content-Length", objStream.size) Response.BinaryWrite(objStream.Read(-1)) Response.End() objStream.Close() objStream = Nothing objFileInfo = Nothing Catch ex As Exception Return False End Try Return True End Function