webForumDet fria alternativet

Låta personen ladda ned lösenordsskyddade filer

PHP

7 svar · 337 visningar · startad av jme

Medlem sedan maj 20012 237 inlägg
Frågan#1

Hej!

Jag har skapat en enkel upload-funktion och den fungerar bra. Filerna lagras i en katalog som är skyddad med htaccess.

Vet jag namnet på filen som finns i denna katalog, samt kompletta sökvägen till just den filen så får jag upp en lösenords-ruta. Helt ok.

Nu vill jag att, om man är inloggad, så skall man kunna ladda ned vissa filer ur just denna katalog, utan att behöva ange lösenord. Inloggningen verifierar att personen har rätt till denna fil. Personen skall komma åt filen genom en länk som genereras ur databasen.

Finns det nåt sätt att låta personen ladda ned filen på detta sätt?

Medlem sedan juni 20034 013 inlägg
#2

Ja, det går. Htaccess gäller bara för Apache, inte för Php. Php kan öppna filen och skicka den till besökaren med funktionen readfile.

Kom dock ihåg att sätta lämplig Content-Type.

Exempelvis:

header("Content-Type: application/octet-stream");

Medlem sedan maj 20012 237 inlägg
#3

hmm, så jag måste kolla vilken sorts fil användaren försöker ladda ned, innan den laddas ned (för att kunna sätta rätt content-type)?

Råkar du ha en mer utförlig kod-snutt? :)

Annars kan jag kika på google. ;)

Medlem sedan maj 20012 237 inlägg
#4

Följdfråga...

Hittade kodexempel och den fungerade delvist. Jag kunde ladda ned en pdf-fil. Men om jag sedan försöker ladda om sidan så händer inget. Stänger jag fönstret och öppnar öppnar ett nytt och anger samma address så kan jag inte ladda ned igen.

Startar jag om Apache så fungerar den

Medlem sedan maj 20012 237 inlägg
#5

Fortsättning på samma tråd:

Nuh ar frågan blivit aktuell igen. Dock så har jag fått mitt script att fungera.

Ställer frågan, om man vill skapa en fungerande download/upload script för diverse filer så måste man då alltid kontrollera vilken typ av fil som är i fråga och sätta Content-type, Content-Transfer-Encoding efter det eller finns det s k genvägar? :)

Det ska fungera med IE, FireFox, Safari(Mac).

Medlem sedan aug. 2001153 inlägg
#6

Finns det tillfällen då du inte vill ha "binary" encoding?

Medlem sedan maj 20012 237 inlägg
#7

Jag testade att ladda ned både bilder, .pdf-filer samt .txt-flier ocg det verkar fungera med binary.

Medlem sedan aug. 2001153 inlägg
#8

Jag kör med Content-Type: application/download på alla.
Det borde fungera sålänge man vill att användaren skall ladda ner filen.

257 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)