J Jon Medlem sedan juli 2001 1 304 inlägg Frågan 10 juni 2004 20:00 #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?
O OveRRidE Medlem sedan feb. 2001 12 078 inlägg 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>
Jesper T Medlem sedan nov. 2001 7 144 inlägg 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>
J Jon Medlem sedan juli 2001 1 304 inlägg Hmm... fungerar inte. Inget händer med varken javascriptet eller response.flush
Jesper T Medlem sedan nov. 2001 7 144 inlägg 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?
Jesper T Medlem sedan nov. 2001 7 144 inlägg 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.
Y yohpops Medlem sedan feb. 2001 1 198 inlägg 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.
Jesper T Medlem sedan nov. 2001 7 144 inlägg 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.
J Jon Medlem sedan juli 2001 1 304 inlägg 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.
Jesper T Medlem sedan nov. 2001 7 144 inlägg Ja, det borde gå att sätta en sessionsvariabel som du läser av på endera sida. Eller med Response.IsClientConnected.
Jesper T Medlem sedan nov. 2001 7 144 inlägg Fråga: fick du till denna?
J Jon Medlem sedan juli 2001 1 304 inlägg 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.