webForumDet fria alternativet

Veta när fil är färdigstreamad

ASP

12 svar · 343 visningar · startad av Jon

Medlem sedan juli 20011 304 inlägg
Frågan#1

Ja skickar en pdf till användaren om viss krav är uppfyllda.
Detta göra jeg med

Response.Buffer = true
Response.ContentType = "application/pdf"
Response.AddHeader "Content-Type", "application/pdf"
'Response.AddHeader "Content-Disposition", "inline;filename=" & pdfName & ".pdf" 'pdf i läsaren
Response.AddHeader "Content-Disposition", "attachment;filename=" & pdfName & ".pdf"  ' pdf att ladda ner
Const adTypeBinary = 1
Dim strFilePath
strFilePath = "c:\temp\" & pdfName & ".pdf" 
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath
Response.BinaryWrite objStream.Read
objStream.Close
Set objStream = Nothing

När detta är klart vill jag redirecta användaren eller skriva ut ett meddelande. Detta går inte... Tips på lösning?

Man kanske kan göra själva streamningen från ett fönster som man öppnar och sen stänger? Men hur ska man då veta när det är klart?

Medlem sedan feb. 200112 078 inlägg
#2

Använd OnLoad i BODY-taggen.

<%
Response.Buffer = true
Response.ContentType = "application/pdf"
Response.AddHeader "Content-Type", "application/pdf"
'Response.AddHeader "Content-Disposition", "inline;filename=" & pdfName & ".pdf" 'pdf i läsaren
Response.AddHeader "Content-Disposition", "attachment;filename=" & pdfName & ".pdf"  ' pdf att ladda ner
Const adTypeBinary = 1
Dim strFilePath
strFilePath = "c:\temp\" & pdfName & ".pdf" 
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath
Response.BinaryWrite objStream.Read
objStream.Close
Set objStream = Nothing
%>

<html>
<body onLoad="document.location.href='mypage.asp';">

</body>
</html>
Medlem sedan nov. 20017 144 inlägg
#3

Funkar det inte med flush?

<%
Response.Buffer = true
Response.ContentType = "application/pdf"
Response.AddHeader "Content-Type", "application/pdf"
'Response.AddHeader "Content-Disposition", "inline;filename=" & pdfName & ".pdf" 'pdf i läsaren
Response.AddHeader "Content-Disposition", "attachment;filename=" & pdfName & ".pdf"  ' pdf att ladda ner
Const adTypeBinary = 1
Dim strFilePath
strFilePath = "c:\temp\" & pdfName & ".pdf" 
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath
Response.BinaryWrite objStream.Read
objStream.Close
Set objStream = Nothing
[b]response.flush()[/b]
%>

<html>
<body>
Streaming klar.
</body>
</html>
Medlem sedan juli 20011 304 inlägg
#4

Hmm... fungerar inte. Inget händer med varken javascriptet eller response.flush

Medlem sedan nov. 20017 144 inlägg
#5

Om du lägger till response.clear() innan då:

response.clear()
response.flush()

Eftersom att du ändrar sidans header så uppfattas väl inte sidan som en "vanlig" html-sida?

Medlem sedan nov. 20017 144 inlägg
#6

Nej, föresten. Clear tar inte bort headers.
Glöm det.

DevGuru skrev:

The Clear method clears (erases) any buffered HTML output. It does not erase the response headers, only the body.

Medlem sedan juli 20011 304 inlägg
#7

Inga fler förslag? :)

Medlem sedan feb. 20011 198 inlägg
#8

Det borde inte gå när det är en pdf.
Eftersom klienten antingen laddar ner filen eller öppna acrobat och stänger därmed den browsern som hämtar filen.

Medlem sedan nov. 20017 144 inlägg
#9

Precis, det handlar ju om en fil som skall laddas ner, eller hur?
En länk till aktuell sida, och klienten får upp en "nerladdningsruta" (spara fil).
Så det är inget att visa i html på den sidan alls ju.

Medlem sedan juli 20011 304 inlägg
#10

Problemet är att jag tänker ta betalt för filen och jag vill inte dra pengarna förrän filen är skickad till klienten.

Det måste gå att lösa på något sätt. Det känns som om man ändå vill redirecta eller sätta nån sessionsvariabel efteråt.

Medlem sedan nov. 20017 144 inlägg
#11

Ja, det borde gå att sätta en sessionsvariabel som du läser av på endera sida. Eller med Response.IsClientConnected.

Medlem sedan nov. 20017 144 inlägg
#12

Fråga: fick du till denna?

Medlem sedan juli 20011 304 inlägg
#13

Både ja och nej.
Jag sätter en sessionsvariabel men jag kan inte ge någon direkt feedback eller berätta för användaren att det gick bra eller dåligt utan att antingen användaren få besöka en sida eller att ligga och ladda om sidan som öppnar popupen som jag streamar från hela tiden.

Inte helt nöjd men det duger med andra ord.

269 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)