but when refresh.redirect() occure it give me error that
can't redirect because headers have been sent
following are my code to download file
Expand|Select|Wrap|Line Numbers
- FDownLoadFile(objAttachmentInfo.FileName)
- Response.Redirect(EditUrl("ItemId", ItemId, "Anonymous", "&tab=4"), False)
- Sub FDownLoadFile(ByVal fileName As String)
- Try
- Dim filePath As String = ConfigurationManager.AppSettings.Get("picUploadPath")
- Dim objFile As New System.IO.FileInfo(filePath + fileName)
- Dim objResponse As System.Web.HttpResponse = System.Web.HttpContext.Current.Response
- If objFile.Exists Then
- objResponse.ClearContent()
- objResponse.ClearHeaders()
- objResponse.AppendHeader("content-disposition", "attachment; filename=""" & objFile.Name.ToString() & """")
- objResponse.AppendHeader("Content-Length", objFile.Length.ToString())
- objResponse.ContentType = DownloadFile.GetContentType(objFile.Extension.Replace(".", ""))
- DownloadFile.WriteFile(objFile.FullName)
- Else
- lb_attachment_status.Text = "File not exist."
- Exit Sub
- End If
- Catch ex As Exception
- ProcessModuleLoadException(Me, ex)
- End Try
- End Sub
Expand|Select|Wrap|Line Numbers
- Imports System
- Imports System.IO
- Imports System.Data
- Imports System.Configuration
- Imports System.Web
- Imports System.Web.Security
- Imports System.Web.UI
- Imports System.Web.UI.WebControls
- Imports System.Web.UI.WebControls.WebParts
- Imports System.Web.UI.HtmlControls
- Namespace PLM.Modules.PLMAttachment
- ''' <summary>
- ''' Summary description for DownloadFile
- ''' </summary>
- '''
- Public Class DownloadFile
- Public Sub New()
- '
- ' TODO: Add constructor logic here
- '
- End Sub
- Public Shared Function GetContentType(ByVal extension As String) As String
- Dim contentType As String
- If extension.ToLower() = "txt" Then
- contentType = "text/plain"
- ElseIf extension.ToLower() = "htm" OrElse extension.ToLower() = "html" Then
- contentType = "text/html"
- ElseIf extension.ToLower() = "rtf" Then
- contentType = "text/richtext"
- ElseIf extension.ToLower() = "jpg" OrElse extension.ToLower() = "jpeg" Then
- contentType = "image/jpeg"
- ElseIf extension.ToLower() = "gif" Then
- contentType = "image/gif"
- ElseIf extension.ToLower() = "bmp" Then
- contentType = "image/bmp"
- ElseIf extension.ToLower() = "mpg" OrElse extension.ToLower() = "mpeg" Then
- contentType = "video/mpeg"
- ElseIf extension.ToLower() = "avi" Then
- contentType = "video/avi"
- ElseIf extension.ToLower() = "pdf" Then
- contentType = "application/pdf"
- ElseIf extension.ToLower() = "doc" OrElse extension.ToLower() = "dot" Then
- contentType = "application/msword"
- ElseIf extension.ToLower() = "csv" OrElse extension.ToLower() = "xls" OrElse extension.ToLower() = "xlt" Then
- contentType = "application/x-msexcel"
- Else
- contentType = "application/octet-stream"
- End If
- Return contentType
- End Function
- Public Shared Sub WriteFile(ByVal strFileName As String)
- Dim objResponse As System.Web.HttpResponse = System.Web.HttpContext.Current.Response
- Dim objStream As System.IO.Stream = Nothing
- Try
- objStream = New System.IO.FileStream(strFileName, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read)
- WriteStream(objResponse, objStream)
- objStream.Close()
- Catch ex As Exception
- objResponse.Write("Error : " & ex.Message)
- Finally
- If objStream Is Nothing Then
- objStream.Close()
- End If
- End Try
- End Sub
- Private Shared Sub WriteStream(ByVal objResponse As HttpResponse, ByVal objStream As Stream)
- Dim bytBuffer As Byte() = New Byte(9999) {}
- Dim intLength As Integer
- Dim lngDataToRead As Long
- Try
- lngDataToRead = objStream.Length
- While lngDataToRead > 0
- If objResponse.IsClientConnected Then
- intLength = objStream.Read(bytBuffer, 0, 10000)
- objResponse.OutputStream.Write(bytBuffer, 0, intLength)
- objResponse.Flush()
- ' TODO: NotImplemented statement: ICSharpCode.SharpRefactory.Parser.AST.VB.ReDimStatement
- lngDataToRead = lngDataToRead - intLength
- Else
- lngDataToRead = -1
- End If
- End While
- Catch ex As Exception
- objResponse.Write("Error : " & ex.Message)
- Finally
- If objStream Is Nothing Then
- objStream.Close()
- objResponse.Flush()
- End If
- End Try
- End Sub
- End Class
- End Namespace
if i write refresh.redirect() line before download file, downloading without error but not refresh.
Can anybody give me solution for this problem
Thanks Advance