Vraag & Antwoord

Webprogrammeren & scripting

[ASP] Response.BinaryWrite Geannuleerd ja/nee?

7 antwoorden
  • Ik stream bestandjes uit een database met: Response.ContentType = rs("ContentType") Response.AddHeader "Content-Disposition", "attachment; filename=" & rs("Filename") Response.BinaryWrite rs("File") De bezoeker krijgt dan van IE de keuze te openen, op te slaan of te annuleren. Is er een manier om te achterhalen welke keuze is gemaakt?
  • Bij de standaard save dialog van de browser denk ik van niet, maar misschien heb je hier wat aan? http://www.functionx.com/vbnet/controls/SaveFileDialog.htm
  • [quote:14707f988b="Paulus"]Ik stream bestandjes uit een database met: Response.ContentType = rs("ContentType") Response.AddHeader "Content-Disposition", "attachment; filename=" & rs("Filename") Response.BinaryWrite rs("File") De bezoeker krijgt dan van IE de keuze te openen, op te slaan of te annuleren. Is er een manier om te achterhalen welke keuze is gemaakt?[/quote:14707f988b] Nee, niet zonder iets op de client te installeren. Waarom zou je dat willen weten?
  • Omdat ik dan weet of het gestreamde bestand is gedownload of niet, dus of er dataverkeer was of niet. Dat kan ik in de weblog (iis) nl. niet terugvinden.
  • [quote:bc2a101e18="Paulus"]Omdat ik dan weet of het gestreamde bestand is gedownload of niet, dus of er dataverkeer was of niet. Dat kan ik in de weblog (iis) nl. niet terugvinden.[/quote:bc2a101e18] [code:1:bc2a101e18] Response.ContentType = rs("ContentType") Response.AddHeader "Content-Disposition", "attachment; filename=" & rs("Filename") Response.BinaryWrite rs("File") <----------- (1) [/code:1:bc2a101e18] (1) Als je op dit punt in de code bent aanbeland dan weet je dat het bestand volledig is verstuurd. Het is heel goed mogelijk dat de client al begint met downloaden voordat de gebruiker daadwerkelijk een locatie gekozen heeft om het bestand op te slaan.
  • Als ik het hier lokaal doe (clientbak=serverbak) met een bestand van 80MB, dan lijkt het er idd op alsof het streamen al begint voor ik de keuze maak. Het duurt dan even voor ik het dialoogvenster krijg en als ik dan meteen enter (opslaan) dan begint het kopieren al (vanaf de cache, dus de download is dan helemaal klaar). Doe ik het met een bestand van 10 MB op een externe webserver, dan krijg ik direct het dialoogvenster en met mijn vinger op de escapeknop annuleer ik hem ook weer direct, dus op zeker voor de download gereed kan zijn. Ook dan wordt de code na (1) uitgevoerd (waar ik een logentry maak). Mijn conclusie is dan dat de code na de BinaryWrite hoedanook wordt uitgevoerd, of nou is opgeslagen of geannuleerd.
  • [code:1:aec2586f91] Response.ContentType = rs("ContentType") Response.AddHeader "Content-Disposition", "attachment; filename=" & rs("Filename") Response.BinaryWrite rs("File") <----------- (1) if Response.IsClientConnected then ' OK else ' Connectie verbroken. endif [/code:1:aec2586f91] (1) Als je op dit punt in de code bent aanbeland dan weet je dat het bestand volledig is verstuurd. Als de verbinding met de client wegvalt, dan wordt de data naar een 'zwart gat' verstuurd. Het kan in dit voorbeeld wel zijn dat het bestand correct verstuurd wordt, maar op (1) de connectie verbroken wordt. Een andere mogelijkheid is het bestand in blokken naar de client versturen en per blok bekijken of er nog een connectie is. - [url=http://support.microsoft.com/kb/q182892/]How To Use IsClientConnected to Check If Browser Is Connected[/url] - [url=http://www.dmxzone.com/ShowDetail.asp?NewsId=492]ASP Timeout on Large Files or Slow Connection[/url]

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.