webForumDet fria alternativet

ladda ner acrobat istället för att läsa..

11 svar · 760 visningar · startad av Jymdis

JymdisMedlem sedan mars 20016 260 inlägg
#1

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.

JojoxxMedlem sedan juni 20004 308 inlägg
#2

Ange en mime-type som är okänd för webbläsaren så bör den spara den på disk istället för att visa den. Ex i perl;

print "Content-Type: application/x-whatever\n\n";

För att få med filnamnet kan du använda;

print "Content-Type: application/x-whatever\n";
print "Content-Disposition: attachment; filename=foo.pdf\n\n";

Eller så sätter du mime-typen i webservern (ifall du inte använder script)

application/x-whatever

------------------
/ J

ironheadMedlem sedan mars 20011 346 inlägg
#3

Hur skriver man i html?

JojoxxMedlem sedan juni 20004 308 inlägg
#4

Det gör man inte :)

------------------
/ J

ironheadMedlem sedan mars 20011 346 inlägg
#5

Kan man göra nåt liknande, så ex. gif-filen laddas ner istället för att visas?

JymdisMedlem sedan mars 20016 260 inlägg
#6

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.

JojoxxMedlem sedan juni 20004 308 inlägg
#7

Jymdis;

I ASP kan du använda Response.AddHeader för att lägga till fält i headern;

Response.AddHeader "Content-type", "application/x-whatever"

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
%>

------------------
/ J

[Redigerat av Jojoxx den 12 jul 2001]

ironheadMedlem sedan mars 20011 346 inlägg
#8

Tack Jojoxx! det fungerar alldeles utmärkt (W2kPro/IIS5).

MekanoMedlem sedan dec. 200061 inlägg
#9

Men..

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

zcorpanMedlem sedan dec. 20042 245 inlägg
#10

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.

MekanoMedlem sedan dec. 200061 inlägg
#11

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.

zcorpanMedlem sedan dec. 20042 245 inlägg
#12

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. ;)

131 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)