Kenneth Dammyr Skrevet 25. desember 2005 Forfatter Rapporter Del Skrevet 25. desember 2005 Her er koden som tar imot fil: /** * Simpelt script der tager imod et filupload og lister * filer i upload-biblioteket. * * Scriptet er et eksempel til en artikel paa WebCafe.dk: * * http://www.webcafe.dk/artikler/php/upload/ */ /** * Hvor skal filerne uploades til? * Husk, at webserveren skal kunne skrive til dette bibliotek */ $konfiguration["upload_bibliotek"] = "../galleri/barn"; /* Hvor mange kilobytes maa filerne fylde per styk? */ $konfiguration["max_stoerrelse"] = "99999999"; /** * Checker PHP-version */ list($major, $minor, $rev) = explode(".", phpversion()); if($major < 4) { die("Jeg kan kun arbejde med PHP 4.0.0 eller derover"); } /** * Udligner forskellene mellem 4.1.x og 4.0.x * Bemaerk, at disse ikke er "superglobals" */ if($minor < 1) { $_FILES = $HTTP_POST_FILES; $_POST = $HTTP_POST_VARS; $_SERVER = $HTTP_SERVER_VARS; } if($_FILES["upfil"]["size"] > 0) { /** * Hvis der er en fil, saa uploader vi den. * * Foerst slaar vi lige fast, hvor filen skal flyttes fra og til. */ $fra = $_FILES["upfil"]["tmp_name"]; $til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"]; /** * Checker lige om filen er for stor til at vi vil acceptere den. * Vi bruger ceil() i stedet for round(), saa vi ikke faar den skoere * situation, at fejlmeldingen siger, at filen er for stor, men angiver * samme stoerrelse for filen og den oevre graense. */ $fil_stoerrelse = filesize($fra)/1024; if($fil_stoerrelse > $konfiguration["max_stoerrelse"]) { die("Desværre - filen er for stor. Jeg accepterer kun " . $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " . ceil($fil_stoerrelse) . "kb"); } if(function_exists("move_uploaded_file")) { move_uploaded_file($fra, $til); } else { copy($fra, $til); } header("Location: " . $_SERVER["PHP_SELF"]); exit; } else { /** * Intet tegn paa upload, saa vi viser bare listen over filer * og HTML-formularen til nye uploads. */ $indhold = listFiler($konfiguration["upload_bibliotek"]); $indhold .= bygFormular($_SERVER["PHP_SELF"]); $output = bygSide("Bilde opplastet", $indhold); } /** * Skriver ud til browseren */ echo $output; exit; /**************************************************\ ** Hjaelpefunktioner ** \**************************************************/ function bygSide($titel, $indhold) { /** * Pakker indholdet ind i lidt formalia */ return '<html> <head><title>' . $titel . '</title></head> <body bgcolor="#ffffff"> <div align="right"><a href="./">Tilbake til admin</a></div> ' . $indhold . '</body> </html> '; } function bygFormular($action) { $formular = '<form action="' . $action . '" method="post" enctype="multipart/form-data"> <table border="1" cellpadding="5" cellspacing="0"> <tr> <td align="right" bgcolor="#999999"><b>Fil til upload:</b></td> <td bgcolor="#cccccc"><input type="file" name="upfil" /></td> </tr> <tr> <td colspan="2" align="middle" bgcolor="#dddddd"><input type="submit" value="upload" /></td> </tr> </table> </form> '; return "<h2>Upload fil:</h2>" . $formular; } function listFiler($bibliotek) { if($bib = @opendir($bibliotek)) { /** * Denne syntaks er forklaret i PHP-manualen: * http://www.php.net/manual/en/function.readdir.php */ while (false !== ($fil = readdir($bib))) { if($fil != "." && $fil != ".." && !ereg("^\..+", $fil)) { $fil_liste[] = "<a href=\"$bibliotek/$fil\">$fil</a>"; } } closedir($bib); if(is_array($fil_liste)) { $liste = "<li>" . join("</li><li>", $fil_liste) . "</li>"; } else { $liste = "<li>Ingen filer på lager</li>"; } return "<h2>Filer på lager:</h2><ul>" . $liste . "</ul>"; } else { die("Kunne ikke åbne biblioteket: " . $bibliotek); } } ?> Som dere ser har jeg utelatt fwrite her nå. Den er det jo mange versjoner av. Kan legge ved en link hvis dere lover å ikke spamme servern min med pornobilder (Det er nemlig ingen passordbeskyttelse eller filbegrensning) www.oyvindthorstadbo.com/admin Lenke til kommentar
Gjest Slettet+6132 Skrevet 25. desember 2005 Rapporter Del Skrevet 25. desember 2005 Her er koden som tar imot fil: ...masse rar og rar kode... Som dere ser har jeg utelatt fwrite her nå. Den er det jo mange versjoner av. Kan legge ved en link hvis dere lover å ikke spamme servern min med pornobilder (Det er nemlig ingen passordbeskyttelse eller filbegrensning) www.oyvindthorstadbo.com/admin 5334715[/snapback] Kikka på den linken din jeg, må være ett av de rareste galleri-scriptene jeg noen gang har sett. Hvorfor så mange upload-forms? Jeg tror fortsatt på min teori; php-filen som skriver blir oppkalt to ganger. (ikke spør meg hvorfor, den koden du posta var et rot ) Lenke til kommentar
Kenneth Dammyr Skrevet 25. desember 2005 Forfatter Rapporter Del Skrevet 25. desember 2005 Som jeg har sagt, dette er ikke mitt sterkeste område. Gjør det derfor på min egen litt sære måte. Alle upload-formsene er fordi det er mange kategorier og filene skal havne bestemte steder. Lenke til kommentar
Gjest Slettet+6132 Skrevet 25. desember 2005 Rapporter Del Skrevet 25. desember 2005 Som jeg har sagt, dette er ikke mitt sterkeste område. Gjør det derfor på min egen litt sære måte. Alle upload-formsene er fordi det er mange kategorier og filene skal havne bestemte steder. 5335006[/snapback] Ok, men da vil jeg tipse deg litt om hvordan du kan endre litt på denne sære måten: En uploadform, og så en radio-button for hver kategori? (forstår fortsatt ikke hva som er galt med scriptet, prøvde å lese gjennom det nå) Lenke til kommentar
Torbjørn Skrevet 25. desember 2005 Rapporter Del Skrevet 25. desember 2005 det ville vært fint om du postet hele phpapplikasjonen uten å fjerne noen ting Lenke til kommentar
Kenneth Dammyr Skrevet 26. desember 2005 Forfatter Rapporter Del Skrevet 26. desember 2005 Kan godt poste hele, men greia er vel den at den delen som skriver endrer jeg på hele tida for å fikse på problemet, men dette er den jeg brukte først. <?php $item = $_POST['navn']; $myFile = "barnedata.php"; $fh = fopen($myFile, 'a') or die("can't open file"); $stringData = "$item\n"; fwrite($fh, $stringData); fclose($fh); /** * Simpelt script der tager imod et filupload og lister * filer i upload-biblioteket. * * Scriptet er et eksempel til en artikel paa WebCafe.dk: * * http://www.webcafe.dk/artikler/php/upload/ */ /** * Hvor skal filerne uploades til? * Husk, at webserveren skal kunne skrive til dette bibliotek */ $konfiguration["upload_bibliotek"] = "../galleri/barn"; /* Hvor mange kilobytes maa filerne fylde per styk? */ $konfiguration["max_stoerrelse"] = "99999999"; /** * Checker PHP-version */ list($major, $minor, $rev) = explode(".", phpversion()); if($major < 4) { die("Jeg kan kun arbejde med PHP 4.0.0 eller derover"); } /** * Udligner forskellene mellem 4.1.x og 4.0.x * Bemaerk, at disse ikke er "superglobals" */ if($minor < 1) { $_FILES = $HTTP_POST_FILES; $_POST = $HTTP_POST_VARS; $_SERVER = $HTTP_SERVER_VARS; } if($_FILES["upfil"]["size"] > 0) { /** * Hvis der er en fil, saa uploader vi den. * * Foerst slaar vi lige fast, hvor filen skal flyttes fra og til. */ $fra = $_FILES["upfil"]["tmp_name"]; $til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"]; /** * Checker lige om filen er for stor til at vi vil acceptere den. * Vi bruger ceil() i stedet for round(), saa vi ikke faar den skoere * situation, at fejlmeldingen siger, at filen er for stor, men angiver * samme stoerrelse for filen og den oevre graense. */ $fil_stoerrelse = filesize($fra)/1024; if($fil_stoerrelse > $konfiguration["max_stoerrelse"]) { die("Desværre - filen er for stor. Jeg accepterer kun " . $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " . ceil($fil_stoerrelse) . "kb"); } if(function_exists("move_uploaded_file")) { move_uploaded_file($fra, $til); } else { copy($fra, $til); } header("Location: " . $_SERVER["PHP_SELF"]); exit; } else { /** * Intet tegn paa upload, saa vi viser bare listen over filer * og HTML-formularen til nye uploads. */ $indhold = listFiler($konfiguration["upload_bibliotek"]); $indhold .= bygFormular($_SERVER["PHP_SELF"]); $output = bygSide("Bilde opplastet", $indhold); } /** * Skriver ud til browseren */ echo $output; exit; /**************************************************\ ** Hjaelpefunktioner ** \**************************************************/ function bygSide($titel, $indhold) { /** * Pakker indholdet ind i lidt formalia */ return '<html> <head><title>' . $titel . '</title></head> <body bgcolor="#ffffff"> <div align="right"><a href="./">Tilbake til admin</a></div> ' . $indhold . '</body> </html> '; } function bygFormular($action) { $formular = '<form action="' . $action . '" method="post" enctype="multipart/form-data"> <table border="1" cellpadding="5" cellspacing="0"> <tr> <td align="right" bgcolor="#999999"><b>Fil til upload:</b></td> <td bgcolor="#cccccc"><input type="file" name="upfil" /></td> </tr> <tr> <td colspan="2" align="middle" bgcolor="#dddddd"><input type="submit" value="upload" /></td> </tr> </table> </form> '; return "<h2>Upload fil:</h2>" . $formular; } function listFiler($bibliotek) { if($bib = @opendir($bibliotek)) { /** * Denne syntaks er forklaret i PHP-manualen: * http://www.php.net/manual/en/function.readdir.php */ while (false !== ($fil = readdir($bib))) { if($fil != "." && $fil != ".." && !ereg("^\..+", $fil)) { $fil_liste[] = "<a href=\"$bibliotek/$fil\">$fil</a>"; } } closedir($bib); if(is_array($fil_liste)) { $liste = "<li>" . join("</li><li>", $fil_liste) . "</li>"; } else { $liste = "<li>Ingen filer på lager</li>"; } return "<h2>Filer på lager:</h2><ul>" . $liste . "</ul>"; } else { die("Kunne ikke åbne biblioteket: " . $bibliotek); } } ?> Lenke til kommentar
El Nino Skrevet 28. desember 2005 Rapporter Del Skrevet 28. desember 2005 header("Location: " . $_SERVER["PHP_SELF"]); Dette er synderen.. når du har lastet opp filen, så reloader den siden og vola.. så skriver du på nytt til filen. El Nino. Lenke til kommentar
Kenneth Dammyr Skrevet 28. desember 2005 Forfatter Rapporter Del Skrevet 28. desember 2005 Kjempeflott! Da har jeg fikset det ved å bytte til en mye enklere script. Noen her nevnte radio buttons istedenfor så mange upload-forms. Er dette en kjapp sak eller må jeg drive å endre _mye_ i php-koden da? Takk! Lenke til kommentar
mikk- Skrevet 28. desember 2005 Rapporter Del Skrevet 28. desember 2005 Når du bruker radiobuttons, skjekker du hva brukeren har satt den til, og får scriptet til å oppføre seg forskjellig basert på dette. Du kan for eksempel bruke en switch (eller vanlige IF-setninger hvis du vil). Nå har ikke jeg sett så nøye på scriptet ditt, men jeg vil tro det bare er en variabel eller to som er forskjellig for de forskjellige upload-formene. Du bruker switchen til å skjekke hvilken radiobutton brukeren har valgt, og gir resten av uploadprosessen de egenskapene de må ha. Lenke til kommentar
Kenneth Dammyr Skrevet 28. desember 2005 Forfatter Rapporter Del Skrevet 28. desember 2005 *Fixed* Takk for all hjelpen! Da er det vel på tide å røpe at jeg har bestemt meg for å "outsorce" bildegalleriet litt. Klarer nok ikke å lage det slik jeg har tenkt uten litt assistanse. Men med et tøft upload-script har vi kommet langt på vei Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå