Jag vet att frågan har varit uppe här innan. Jag vill att man laddar ner acrobat filen istället för att få upp den i fönstret när man har en länk till den. Jag vet att det går att zippa men det är inget val. Har för mig att det var nåt med modifiering av http headern eller liknande.
mvh
Jymdis
------------------
-------------------
Andreas Lännerberg
Jag hör till dom som betalar mina räkningar med glädje, men dom vill hellre ha betalt i pengar.
och hur skriver man i asp?
och skriver man det "högst upp" (innan html koden) eller precis innan filen?
tackar
jYmdis
------------------
-------------------
Andreas Lännerberg
Jag hör till dom som betalar mina räkningar med glädje, men dom vill hellre ha betalt i pengar.
Men det är du inte mycket hjälpt av när du vill returnera en PDF-fil. Den bör du läsa binärt och returnera till webbläsaren om det skall fungera, och det verkar vara en liten vetenskap i sig i ASP. Text-filer är inga problem, men det skiter sig med [cr]/[lf] när du skall returnera binär-data. Tyvärr.
Ironhead;
Samma sak gäller vilket filformat du än väljer. Http-headern skickas före själva filen för att tala om vad det är som webbläsaren kan förvänta sig att få. Det är ingenting som du senare kan ändra i html-koden (det blir moment 22). Det finns ett attribut i html för att tala om vilken typ av fil en länkad källa är i, men den kan du inte använda för att "lura" webbläsaren med på detta vis.
--- Tillägg ---
Hittade ett litet exempel som jag modifierade från ASP-forumet. Dock kunde jag inte använda det själv eftersom jag inte kunde använda objektet Stream på min server (kanske för gammal version), men det kanske funkar hos dig;
<%
Response.ContentType = "application/x-whatever"
Const adTypeBinary = 1
Dim strFilePath
strFilePath = Server.MapPath("foo.pdf") 'This is the path to the file on disk.
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 man kör scriptet får man ju valet att spara, öppna så
långt ok, men filnamnet man ska spara blir ju aspsidans namn
med .asp, hur får man ner pdf filens namn med .pdf i spara
rutan, eller har jag missat något. :r
Ajaj...jag skulle inte ändra MIME typen till ett okänt format... Att Windows är ett operativsystem där hantering av filer baseras på filändelser är ingen ursäkt.
Om något, ändra bara Content-Disposition till attachment.
Nja det verkar inte heller funka så bra, men om jag lägger:
Response.ContentType = "application/Octet-Stream
så fattar den iallafall att det är en PDF fil.
det är bara filnamnet som står kvar.
Alltså i dialogrutan spara:
Filnamn: dinfil.asp
Filformat: Adobe Acrobat 7.0 Document
Vilket betyder att man måste skriva ett eget namn, typ minfil.
men faran är ju att man missar detta och då är man ju tillbaka
på ruta 1 igen, att man måste berätta för besökaren hur de ska göra.
Typ lika med högerklicka, välj spara mål som.... LOL.
Fattar inte att detta problem inte har hängt med i utvecklingen och är
löst nu.
Det är inget problem. Det du behöver göra är att länka till PDF-filen som vanligt. Sen är det upp till användaren att titta på den, spara den, kasta den eller göra vad hon vill med den. Hur PDF-filer öppnas är en inställning på klientsidan, alltså i webbläsaren eller i PDF-läsaren... Om orginalinställningen (som brukar vara "öppna i webbläsaren") inte är en bra orginalinställning får du rapportera en bugg till dem som gör PDF-läsaren. ;)
265 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2