ciao a tutti, ho una pagina asp che carica un file pdf e lo spedisce tramite "response.BinaryWrite" al client, volevo sapere se c'è qualche modo per sapere quando tutta la respons è stata ricevuta dal client...qualche idea?
ciao a tutti, ho una pagina asp che carica un file pdf e lo spedisce tramite "response.BinaryWrite" al client, volevo sapere se c'è qualche modo per sapere quando tutta la respons è stata ricevuta dal client...qualche idea?
Credo che, essendo HTTP vs client, la certezza sul termine dell'invio la hai all'evento javascript onload() del tag BODY della tua pagina.
Dovrebbe essere lo stesso principio delle immagini in una pagina html standard.
ci ho pensato, ma purtroppo non posso utilizzare la onload dato che la pagina in questione non è una html...![]()
![]()
La domana allora "sorge spontanea"...
Che deve succedere una volta inviato il file al client?
Cosa devi farne del file inviato al client??
ti faccio vedere il codice...praticamente devo creare un file dat non appena finisco di scaricare un pdf
'Recupero il file da scaricare
Dim download
' Creo l'oggetto ADODB.Stream
Set download = Server.CreateObject("ADODB.Stream")
' Apro la connessione e carico il file
download.Type = 1
download.Open
download.LoadFromFile Server.MapPath("E010101.pdf")
' Aggiungo le intestazioni del tipo di file
Response.buffer = true
Response.AddHeader "Content-Disposition" , "inline;filename=test2.pdf"
Response.ContentType = "application/pdf"
Response.BinaryWrite download.read
' Un po di pulizia...
download.Close
Set download = Nothing
response.flush
set nuovo = server.createobject("Scripting.Filesystemobject")
set file = nuovo.createTextFile(Server.Mappath("/mdb-database/completo.dat"))
file.close()
set file=nothing
set nuovo = nothing
non c'è nessuno che può darmi una mano?![]()
![]()
Ho provato a fare una cosa simile anche io...ma niente. Il problema è che il Flush è asincrono...
Una alternativa c'è ma dipende dal perchè invii lil PDF in quel modo al client..
Quello che voglio fare è un preload con un'immagine gif che aspetti il caricamento di un file pdf e che successivamente lo apra...solo che appena dopo un evento javascript la gif si blocca, ed ho pensato ad una soluzione con i frames...
Quale sarebbe la tua alternativa?
Io una cosa simile, ma con javascript, la utilizzo in un sito per verificare la velocità di banda fra il server i i vari client.
Utilizzo uno script misto javascript/asp (preso dal BandWidth Meter) che visualizza un preload (un testo con una immagine) e di seguito, dopo aver effettuato il download del payload, fa il redirect vs un'altra pagina.
Magari non è esattamente quello che ti serve, ma può darti idee in più...
codice:<% header="CONTROLLO AMPIEZZA DI BANDA DISPONIBILE" footer = "Verifica Connessione" %> <html> <script language=JavaScript> <!-- var message=""; function clickIE() {if (document.all) {(message);return false;}} function clickNS(e) {if (document.layers||(document.getElementById&&!document.all)) { if (e.which==2||e.which==3) {(message);return false;}}} if (document.layers) {document.captureEvents(Event.MOUSEDOWN);document.onmousedown=clickNS;} else{document.onmouseup=clickNS;document.oncontextmenu=clickIE;} document.oncontextmenu=new Function("return false") // --> </script> <head> <title>Bandwidth Meter</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <META HTTP-EQUIV="Expires" CONTENT="Fri, Jun 12 1981 08:20:00 GMT"> <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"> <link rel="stylesheet" href="style.css"> </head> <body bgcolor="#FFFFFF" background="pic/globebg3.jpg" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <center> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td><%=header%></td> </tr> </table> <table border=0 cellpadding=0 cellspacing=0> <tr> <td> <font size=+1> Test in corso attendere...</font> <p align="center"> [img]pic/clessidra.gif[/img] </p></td> </tr> </table> <script> <!-- time = new Date(); starttime = time.getTime(); // --> </script> <% NomeFile=Server.MapPath("payload.txt") dim file,fs,file1 set fs=server.CreateObject("Scripting.FileSystemObject") set file1=fs.GetFile(NomeFile) dimFile=file1.Size/1024 set file=fs.OpenTextFile(NomeFile) Testo=file.ReadAll() file.Close Set file=Nothing Set fs=Nothing Response.Write("") %> <script> <!-- time = new Date(); endtime = time.getTime(); if (endtime == starttime) { downloadtime = 0; } else { downloadtime = (endtime - starttime)/1000; } kbytes_of_data = <%=dimFile%>; linespeed = kbytes_of_data/downloadtime; kbps = Math.round((linespeed*8)*10*1.024)/10; document.location.href="results.asp?kbps="+kbps+"&footer=<%=request("footer")%>&kbyte="+kbytes_of_data+"&dltime="+downloadtime+"&ip=<%=request("ip")%>"; // --> </script> <center> </body> </html>