Ga naar inhoud

[ASP] Response.BinaryWrite Geannuleerd ja/nee?


Aanbevolen berichten

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?
Link naar reactie
[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?
Link naar reactie
[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.
Link naar reactie
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.
Link naar reactie
[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]
Link naar reactie
Bedankt voor de tips, ziet eruit alsof ik daarmee voor elkaar kan krijgen om te achterhalen of het bestand helemaal is gedownload of niet, maar vooralsnog krijg ik het streamen in blokken vanuit een database niet lekker lopen hier, wel vanaf de harddisk (LoadFromFile), maar dan ook weer niet meer als ik na het streamen een connectie met de database openzet. Adodb-objecten die elkaar in de weg zitten ofzo. Ik kijk er weer een keer naar als ik fris ben en misschien moet ik de files ook maar gewoon op de harddisk opslaan, de db is daar toch niet zo'n geschikte plaats voor.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...