Avatar billede bagnavnet Nybegynder
01. juli 2005 - 19:58 Der er 10 kommentarer

download fra hjemmeside

Hvordan laver man et link som straks sætter en fil til download uden at den vises først?
Avatar billede ksoren Nybegynder
01. juli 2005 - 20:02 #1
Med mindre brugeren har indstillet sin browser til automatsk at gemme filer et bestemt sted, kan du nok ikke gøre så meget. Det ville være en fatal sikkerhedsfejl, hvis man kunne
Avatar billede bagnavnet Nybegynder
01. juli 2005 - 20:20 #2
ja, men det er heller ikke det jeg vil. Du ved, når man går på et download-site og skal hente en fil, så kommer den op med en [open|save|cancel] boks, hvor man der kan vælge save. Det er sådan én jeg gerne vil have frem....kan godt se at min formulering var lidt misvisende.
Avatar billede softspot Forsker
01. juli 2005 - 21:24 #3
Så skal du sætte en header der angiver at det er en vedhæftet fil og hvilket filnavn den som udgangspunkt skal bruge...

Response.AddHeader("Content-Disposition", "attachment; filename=test.pdf")
Response.ContentType = "application/pdf"

Du burde så kunne udskifte test.pdf med et mere sigende navn, f.eks. det filen hedder på serveren eller hvad ved jeg :)
Avatar billede roenving Novice
02. juli 2005 - 00:57 #4
Du skal i hvert fald i dit server-side script sætte en header, som betyder at browseren ikke forsøger at vise tingen !-)
Avatar billede bagnavnet Nybegynder
02. juli 2005 - 13:16 #5
er det i mit css script eller hvordan?
#header{Response.AddHeader("Content-Disposition", "attachment; filename=test.pdf")
Response.ContentType = "application/pdf"}?? Jeg er ikke helt med?
Avatar billede softspot Forsker
02. juli 2005 - 13:32 #6
Koden skal bruges på serveren sammen med Response.BinaryWrite. Du kan sikkert få det til at fungere ved at lave et ASP-script på serveren med flg. kode:

(Lad os kalde scriptet getFile.asp)
<%@ language="vbscript" %>
<%
Function ReadBinaryFile(FileName)
  Const adTypeBinary = 1
 
  'Create Stream object
  Dim BinaryStream
  Set BinaryStream = CreateObject("ADODB.Stream")
 
  'Specify stream type - we want To get binary data.
  BinaryStream.Type = adTypeBinary
 
  'Open the stream
  BinaryStream.Open
 
  'Load the file data from disk To stream object
  BinaryStream.LoadFromFile FileName
 
  'Open the stream And get binary data from the object
  ReadBinaryFile = BinaryStream.Read
End Function

Dim varData

varData = ReadBinaryFile(Server.MapPath("enEllerAndenFil.pdf"))
Response.AddHeader("Content-Disposition", "attachment; filename=enellerandenfil.pdf")
Response.ContentType = "application/pdf"
Response.BinaryWrite(varData)
%>

Dette script kalder du så i dit link fra den side der skal hente dokumentet:

(Lad os kalde det script side.asp)

<html>
<head>
  <title>Test dokumentlæser</title>
</head>
<body>
  <a href="getFile.asp">Hent dokument</a>
</body>
</html>


Dette kode er ikke testet, men så kan vi jo teste sideløbende :)
Avatar billede foxmulder58 Praktikant
02. juli 2005 - 13:38 #7
jeg troede bare man kunne linke til den fil brugeren skulle doownoad som eksempelvis:


<a href=files/program.zip">hent fil her</a>

eller er det het skudt ved siden af?

mvh
mads
Avatar billede softspot Forsker
02. juli 2005 - 13:48 #8
Det kan du også, men så er det browserens standard-indstillinger for hvordan en fil skal hentes der benyttes. Det betyder bla. at f.eks. word-dokumenter åbnes i browservinduet (i hvert tilfælde i IE) og det samme gælder for pdf-dokumenter.
Avatar billede foxmulder58 Praktikant
02. juli 2005 - 13:50 #9
nårh ja det er rigtigt!

hmmm, i min browser når jeg åbner et pdf dokument går det fint ..dog dør explorer altid efter et stykke tid det er noget med et "active x-objekt fejl".

mvh
mads
Avatar billede softspot Forsker
02. juli 2005 - 14:02 #10
Er det når du bruger det script jeg postede eller...?

Der er i øvrigt en lille rettelse til det script, nemlig at man ikke må benytte parantes når AddHeader kaldes. Dvs. den linie skal se således ud i stedet:

Response.AddHeader "Content-Disposition", "attachment; filename=enellerandenfil.pdf"
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester