| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
Multi uploadJuhis 25.02.04 15:29 Monta tiedostoa kerralla servulle.
<?php ob_start(); /* Multi upload ;) Käytä miten lystäät. 15:12 24.2.2004 */ define("MAX_COUNT", 10); // määritetään että kuinka monta tiedostoa voidaan kerralla tallentaa serverille define("UPLOAD_DIRECTORY", "upload/"); // määritellään tiedostojen uusi koti, eli minne tiedostot upitetaan define("MAX_SIZE", 126976); // yksittäisen tiedoston maksimikoko define("INDEX_PAGE", "index.php"); // määritetään redirect sivu if(!is_dir(UPLOAD_DIRECTORY)) { mkdir(UPLOAD_DIRECTORY, 0777); // jos hakemistoa ei ole olemassa, luodaan sellainen } if(file_exists($_FILES['file1']['tmp_name'])) { // tarkistetaan että edes ensimmäinen kuva on tallentunut servulle temp hakemistoon, aloitetaan upitus for($i=1; $i<=MAX_COUNT; $i++) { if($_FILES['file'.$i]['size'] > MAX_SIZE) { echo "Liian iso tiedosto!<br>".MAX_SIZE." on raja"; break; } if(file_exists(UPLOAD_DIRECTORY.$_FILES['file'.$i]['name'])) { exit($_FILES['file'.$i]['name']." niminen tiedosto on jo serverillä"); } move_uploaded_file($_FILES['file'.$i]['tmp_name'], UPLOAD_DIRECTORY.$_FILES['file'.$i]['name']); // tallennetaan tiedosto serverille header("Location: ".INDEX_PAGE); // ja sitten redirect } } ?> <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" ENCTYPE="multipart/form-data"> <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="102400000"> <?php for($i=1;$i<=MAX_COUNT;$i++) { echo " <b>$i</b> <input type=\"file\" name=\"file".$i."\" size=\"75\"><br>"; } ?> <input type="submit" value="upload"></form><?php ob_end_flush(); exit; ?> empty 16:58 25.2.04 toimiiko IE:llä tkr7 17:51 25.2.04 Kai PHP:n pitäs olla selaimesta riippumaton. (ellei tietenkin lasketa, esim. keksien tallentamisen eväämistä) Petesku 18:03 25.2.04 Ihan hyvän näköinen vaikka olenkin vasta aloittelija. Bemari 11:20 28.12.04 Warning: Cannot modify header information - headers already sent by (output started at C:\omaservu\upload\upload.php:6) in C:\omaservu\upload\upload.php on line 26 tuollasen virheen antaa. eli redirect ei toimi (enää, sillä ennen se toimi). mitään olennaista en mielestäni muuttanut, mut ei vaan toimi... juurikaan mitään en php:stä ymmärrä :-) editoitu: 21:24 28.12.04 Bemari 11:21 28.12.04 edit nro. 3 :-D nyt toimii kummiskin... vielä ku osais liittää tohon toiminnon jolla määritellään hyväksytyt tiedostomuodot... pitänee koittaa pähkäillä ;-).... olis muuten hieno sellanenkin ominaisuus että vois valita kansion mihin filut upitaan... siis uppausvaiheessa sais valita annetuista vaihtoehdoista :-) Enemy1978 15:04 13.1.05 Muuten hyvä mut ei toimi D4_B34M 20:54 18.3.05 Hyvä ja selkee koodi ;) eikös toi mee sekasin temp tiedoston kanssa kun moni uppaa samaan aikaan? KaluP 16:19 26.4.05 Mulla se väittää ahkerasti: Warning: Cannot modify header information - headers already sent by (output started at /home/vtsten/public_html/upload/upload.php:9) in /home/vtsten/public_html/upload/upload.php on line 38 samanniminen tiedosto on jo serverillä Mutta silti kuvat/muut menee serverille. Toimiihan se näinkin mutta olis se nyt kiva saada toimimaan myös oikein. Joten Mitä teen, oi älykkäämmät? sampsu 19:07 12.9.05 Käyttöoikeuksista muodostui pienoinen ongelma. Kun tiedostot luodaan palvelimelle selaimen kautta, owneriksi tulee www-data, ja kirjoitusoikeudet ainoastaan ownerilla. Tiedostojen poistamisen kanssa tuli näin ollen ongelma - ainoastaan root ja www-data voivat poistaa tiedoston. Korjaantuu onneksi php:n chmodilla: chmod(UPLOAD_DIRECTORY.$_FILES['file'.$i]['name'], 0777); Tämän kun lisää tallennusrivin jälkeen, on vapaat poisto-oikeudet. Tuohon virheilmoitukseen (Warning: Cannot modify header information) ei riitä osaaminen - vielä ;) Viisaammat neuvokoon... Bitten 17:38 17.10.05 Mitenkäs tuosta voisi muokata sellaisen, että ohjelma uploadaamisen jälkeen menisi sinne tiedostoon, että sen osoitteen voisi kopioida? Olen sen verran vähän tuota php:tä lukenut, että voisitko antaa suhteellisen tarkat ohjeet? soppa 14:20 6.12.05 ihan hyvä, mutta nuo tiedostot ei kyllä ilmesty tuonne servulle.. ;) Firewolf 18:54 9.5.08 Huoh. Tuo Warning: Cannot modify header information hoituu pistämällä tuo ob_start(); sen sivun ensimmäiseksi sanaksi (<?php:n jälkeen). http://pp.kpnet.fi/blaze/codefaq/#headerssent |
![]() Haku
|