Problème avec download fichier
Bonjour à tous,
J'essaye de mettre en place un modalpopup (Ajax) "waiting" durant les traitements un peu long de mon site.
J'utilise donc un modalpopup avec un message et un Gif animé (avec fonction javascript pour que l'animation se fasse durant le postback ;)) qui s'affiche lorsque l'on clique sur un bouton (avec OnclientClick) via une fonction Javascript.
Lorsque l'on clique sur le bouton, mon ModalPopUp s'affiche bien et la gif animée est bien animée.
Les traitements (maj de la BDD, génération d'un PDF à partir d'un rapport CrystalReport et Download du PDF) de la procédure qui s'execute lors du clique du bouton se passe bien, sauf qu'à la fin de ma procédure, la commande qui doit permettre de cacher le modalpopup ne fait rien (pas de message d'erreur...).
Le problème vient de ma fonction qui sert à downloader le fichier PDF sur le poste client car quand je supprime cette fonction, plus de problème.
Ci-dessous, le code de cette fonction :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| Private Function Upload(ByVal fichier As String, ByVal ext As String, ByVal repertoire As String) As Boolean
' On ouvre le fichier.
Dim iStream As New System.IO.FileStream("C:\Inetpub\wwwroot\" & repertoire & fichier & "." & ext, System.IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read)
Dim dataToRead As Long = iStream.Length
Dim length As Integer
'Response.ContentType = "application/octet-stream"
Response.ContentType = "application/pdf"
Response.AddHeader("Content-Disposition", "attachment; filename=" & fichier & "." & ext)
Dim buffer(10000) As Byte
' on charge le fichier et on envoi par paquet de 10000.
While dataToRead > 0
'on vérifie si le client est toujours connecté
If Response.IsClientConnected Then
length = iStream.Read(buffer, 0, 10000)
Response.OutputStream.Write(buffer, 0, length)
Response.Flush()
ReDim buffer(10000) ' Clear the buffer
dataToRead = dataToRead - length
Else
'si le client n'est plus connecté
dataToRead = -1
Return False
End If
End While
Response.Close()
iStream.Close()
Return True
End Function |
Je ne trouve pas d'explication à mon problème et donc de solution...
Par avance, merci.