Avatar billede c-lund Nybegynder
13. februar 2006 - 16:38 Der 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?

Vh
Christian
Avatar billede 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..

håber du kan bruge det..
Avatar billede c-lund Nybegynder
14. februar 2006 - 11:43 #2
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
Avatar billede Slettet bruger
14. februar 2006 - 12:59 #3
kan man godt men det vil jeg ikke anbefale..
Avatar billede c-lund Nybegynder
14. februar 2006 - 13:04 #4
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?
Avatar billede 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
%>
Avatar billede c-lund Nybegynder
14. februar 2006 - 13:12 #6
ja, det er også sådan jeg har gjort nu :) men du skal have tak for det
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