IlliusMedlem sedan aug. 200929 inlägg Hej! Ska sätta ihop en filuppladdning på en redan färdig tjänst.
Dock vet jag inte riktigt hur jag ska göra... Själva uppladdningen verkar enkel men det svåra verkar vara att få det säkert.
Jag vill att varje användare ska få ladda upp en viss mängd data.
sedan ska bara den användaren se sina filer man ska inte kunna skriva om URL:en och hitta användare-2s filer. Nästa problem är att jag vill att man bara ska få ladda upp office-dockument och bilder. Kan jag använda Mime-typer då? eller är det lätt att ändra detta för den som vill förstöra?
tex ladda upp en php-fil som i mimetypen ser ut som en jpg-fil?
Tacksam för råd och ev bra länkar på system ni använd eller så?
Jag har byggt ett liknande system. Det viktiga är att du sparar alla filer _utanför_ webrooten (t.ex. public_html) för att det inte ska gå att länka sig till filerna. Till detta hade jag använt en databas (bl.a. för att enkelt hålla reda på hur många samt hur stora filer som hittills lagts upp).
Vidare skulle jag då skapa mappar för varje ny användare, t.ex. ./download/username1 resp. ./download/username2 där deras resp. filer sparas.
Bättre att göra filkontrollen på filändelse istället för mimetype (ev. kan båda kombineras för max. säkerhet) men hur som helst bättre att kolla ändelsen, även fast det är en phpfil som heter .jpg kan den ju inte köras, så det är nog det bästa.
När någon ska hämta en fil har du en fil som t.ex. heter "download.php" där du skickar med fil-id, t.ex. ?fil=1. I databasen har du då sparat vilken användare filen tillhör + filnamnet så då kan du enkelt hämta den från rätt mapp och "stream" ut den i webbläsaren.
För att få ut filändelse kan man t.ex. använda sig av:
$file_ext = end(explode($file['name'], "."));
IlliusMedlem sedan aug. 200929 inlägg Tack för en bra post!
ska hålla det där i tankarna... du har ev inte ditt system att dela med dej?
Fler tips?
Illius skrev:
du har ev inte ditt system att dela med dej?
Tyvärr kan du inte få hela koden, eftersom det ingår i en större produkt. Hur långt har du kommit?
IlliusMedlem sedan aug. 200929 inlägg Har inte kommit någon vart alls då jag väntat med bygget eftersom jag saknar kunskapen om säkerhet...
Men jag har ju "ritat" fram lösningen åt dig i mitt första inlägg. Hur du "ska" (kan) spara filerna i olika mappar utanför webrooten samt kontrollera filändelse.
IlliusMedlem sedan aug. 200929 inlägg Men blir mapparna skyddade om dom ligger utanför webbroten?
går väl alltid att skapa en länk så man tar sig till mappen över rooten?
M@gnusMedlem sedan jan. 20061 808 inlägg Det går inte att surfa till mappar utanför webroot och följaktligen inte länka dit heller.
IlliusMedlem sedan aug. 200929 inlägg men om man skapar en länk i stil med ../uppladdning från webrootindex =) ??
M@gnusMedlem sedan jan. 20061 808 inlägg Det går inte. Om du skapar en länk typ /blabla/blabla så utgår den från webroot. Likadant med ../blabla fast då beror det på var i strukturen du befinner dig.
IlliusMedlem sedan aug. 200929 inlägg Men hur länkar JAG själv till filen sen om den är olänkbar?
Läs mitt första inlägg igen. Du sparar filernas namn + sökväg i en databas, du "hämtar" en fil med fil.php?fil=1, du kollar "var" fil med id 1 ligger fysiskt, du hämtar ut dess mimetype och streamar ut den i webbläsaren.
IlliusMedlem sedan aug. 200929 inlägg hur gör jag för att streama efter mimetype? räcker det inte med att bara kolla mime när den sparas?
Sök! Finns massor av information både här på wF och på t.ex. Google
IlliusMedlem sedan aug. 200929 inlägg Men alltså är det viktigt?
Min sida är ungefär som en blogg man skriver ett inlägg och kan numera lägga till en extern fil. Om man laddar upp en fil kan jag väl bara spara en URL till filen i databasen,
tblposter? Va har jag för nytta av mimetypes då? menar jag kollar ju redan de när filen laddas upp...
Viktigt? Det är det väl bara du som vet... Det står i ditt första inlägg att du vill kontrollera filerna osv.
Är det wordpress eller något liknande "färdigt" system du använder?
IlliusMedlem sedan aug. 200929 inlägg aa men då behövs det inte göras igen gör det när jag sparar filerna redan :)
Nej kodar allt från början och sitter just nu med lite problem ang streamningen...