Avatar billede djmoose Nybegynder
14. februar 2005 - 09:58 Der er 5 kommentarer og
1 løsning

Bedste måde at downloade

Jeg har en word (doc) fil som jeg ønsker en kunde skal kunne downloade. Men hvordan tilbydes download bedst. Hvis jeg henviser med et hyperlink direkte til filen, er der nogle computere der kommer med advarsler, er der en rigtig måde at gøre det på?
Avatar billede eagleeye Praktikant
14. februar 2005 - 10:02 #1
Du kan tvinge "Save As" dialogen frem ved at sætte content type i HTTP headeren og så streame indeholdet af filen til browseren med objektet ADODB.Stream.

Eks:

<%
Const adTypeBinary = 1
' Filen vi vil sende til brugeren

strFile = "etworddokument.doc"

strFileType = "application/msword"

Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary  'Sæt binær læsning
objStream.LoadFromFile(Server.MapPath(strFile)) 'Load filen

' Sæt content header
Response.AddHeader "content-disposition","attachment; filename=" & strFile
Response.ContentType = strFileType  'Sæt fil typen

Response.BinaryWrite(objStream.Read)
Response.Flush()
objStream.Close()
Set objStream = Nothing
%>


Det kan jo laves mere dynamisk sådan man sender filnavnet på den fil man ønsker skal downloades overføres til koden via en querystring eller form.
Avatar billede djmoose Nybegynder
14. februar 2005 - 10:21 #2
Nu er jeg ikke lige så skrap til programmering. Kunne du sætte ovenstående kode ind i dette dokument:


<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Eksempel</title>
</head>

<body>

<p><a href="wordfiler/faq.doc"><img border="0" src="faq.gif" width="14" height="16"></a></p>

</body>

</html>
Avatar billede eagleeye Praktikant
14. februar 2005 - 10:27 #3
Ja, linket bliver så til den samme fil men en paramter så man kan download filen.

Du kan sætte dette ind i filen:



<%
if Request.QueryString("fil") <> "" then
  Const adTypeBinary = 1
  ' Filen vi vil sende til brugeren

  strFile = Request.QueryString("fil")

  strFileType = "application/msword"

  Set objStream = Server.CreateObject("ADODB.Stream")
  objStream.Open
  objStream.Type = adTypeBinary  'Sæt binær læsning
  objStream.LoadFromFile(Server.MapPath(strFile)) 'Load filen
 
  ' Sæt content header
  Response.AddHeader "content-disposition","attachment; filename=" & strFile
  Response.ContentType = strFileType  'Sæt fil typen
 
  Response.BinaryWrite(objStream.Read)
  Response.Flush()
  objStream.Close()
  Set objStream = Nothing
'  Evt lav redirect
'  response.redirect(Request.ServerVariables("SCRIPT_NAME"))
  response.end
end if
%>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Eksempel</title>
</head>

<body>

<p><a href="<%=Request.ServerVariables("SCRIPT_NAME")%>?fil=<%=Server.URLEncode("wordfiler/faq.doc")%>"><img border="0" src="faq.gif" width="14" height="16"></a></p>

</body>

</html>
Avatar billede djmoose Nybegynder
14. februar 2005 - 15:09 #4
Det kan jeg ikke få til at virke nu skriver den bare ?fil="> som hyperlink sammen med det billede den henviser til filen
Avatar billede moejensen Nybegynder
10. marts 2005 - 16:55 #5
prøv lige at sætte koden ind du har nu.
Avatar billede djmoose Nybegynder
20. september 2005 - 18:05 #6
Hvis i kommer på et svar, siger i til, så genopretter jeg spørgsmålet
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
Kurser inden for grundlæggende programmering

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