13. februar 2006 - 16:38Der er
5 kommentarer og 1 løsning
Filer til download
Hey!
Jeg skal lave et system, hvor man kan downloade filer. men man skal være logget ind for at kunne downloade dem. problemet er at man ikke skal kunne downloade dem ved at skrive den rigtige sti i adresse linien, hvordan gør man sådan noget?
Hvis offentlige organisationer skal lykkes med AI, skal de først have styr på adoption, datakvalitet og datasuverænitet.
Slettet bruger
13. februar 2006 - 17:52#1
Hey c-lund det beste du kan gøre er at få lave en mappe der ikke er foran din www mappe på det webhottel. og der til skal du så bruge et script som dette.
<% 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 %>
du skal så rette FilePath til det mappe du har din fil på. så har du et script der kan hente den data der er under den mappe.. her kan du så kode den vider sådan at man kun kan hente data hvis man er logge ind via session..
Cool nok. Men kan man få den til automatisk at finde stien på ens server til f.eks. en mappe der hedder download der ligger i samme mappe som www mappen
ok, tænkte bare at hvis de nu skulle flytte mit webhotel til en anden lokation, så vil det jo ikke virke. hvad kan der ske ved at den gør det automatisk?
Synes godt om
Slettet bruger
14. februar 2006 - 13:09#5
Du kan ske at ting ikke virker. men du kan gøre som jeg har gjort jeg har lave en fil ved navn config.asp og her skriver jeg sådan her
<% Downloadmap = "C:\website\123456.dk\download" og oplysninger til min database %>
i din download fil kan du så hente den string så du kan ænder den i tilfælde du flytter dit hottel til anden sted. husk at der er webhottel der ikke accpter denne løsning med at hente data bag dit web mappe.
<!--#include file="config.asp"--> <% 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 = Downloadmap & 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 %>
ja, det er også sådan jeg har gjort nu :) men du skal have tak for det
Synes godt om
Ny brugerNybegynder
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.