02. november 2005 - 07:15
#1
<%
'
' *** Send fil til klienten ***
' af: Bjarke Walling Petersen <bwp@bwp.dk>
'
On Error Resume Next ' Gå ikke ned ved fejl (f.eks. hvis filen ikke eksisterer)
' Find fil-stien ud fra filnavnet angivet i QueryStringen: ?file=xxxx
' Både \ og / fjernes fra filnavnet for at sikre at man ikke kan gå ind i andre mapper.
' Filerne skal selvfølgelig være placeret et sted, så webserveren ikke kan sende dem.
' Dette ville spolere hele idéen. Her er de placeret i C:\Filer\. Har man ikke egen
' server, men et webhotel, har man normalt adgang til den mappe som webmappen ligger i.
' Her kan filerne også placeres.
FilePath = "C:\Filer\" & Replace(Replace(Request.QueryString("file"), "/", ""), "\", "")
Response.Buffer = True ' Vent med at sende output til scriptet er færdigt
Set st = Server.CreateObject("ADODB.Stream") ' Åben objektet
st.Type = 1 ' Sæt fil-typen til binær
st.Open ' Åben objektet
st.LoadFromFile FilePath ' Åben fil angivet i querystringen: ?file=xxxx
Response.Clear ' Rens output-bufferen
Response.ContentType = "image/gif" ' Sæt fil-typen (MIME-Type). I dette tilfælde en
' .gif-fil. Se evt. artiklen 'MIME Content-types i IIS'
' Følgende sætning gør at der fremkommer en download-boks hos brugeren. Hvis man ønsker
' at det f.eks. er et billede, der vises i en HTML-fil, skal man selvfølgelig ikke gøre det.
' Det sætter også det viste filnavn til fil.gif. Prøv evt. at ændre 'attachment' til 'inline'.
Response.AddHeader "content-disposition", "attachment;filename=fil.gif"
Response.BinaryWrite st.Read() ' Udskriv filen til brugeren: (I første omgang bufferen)
st.Close ' Luk objektet
Set st = Nothing ' Ryd op
Response.End ' Afslut scriptet
%>
et ret godt script og nemt at lave om til det du søger..