Olen pähkäillyt kyseisen koodin kanssa aikani...
Mihin muuttujaan olisi mahdollista siepata kuvien tiedoston nimi...
Olisiko mahdollisesti $file1, $file2, ...
<?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; ?>
$nimi[$i] = $_FILES['file'.$i]['name'];
Tuo taas tekee esim
$nimi[1] = "kalle.jpg"; $nimi[2] = "win.exe"; $nimi[3] = "jei.zip";
Tuossahan ei ole mitenkään tarkistettu tiedoston tyyppiä. Mutta todella helposti senkin saa siihen.
Ja edit: tuo siis tonne for loopin sisälle ;-)
Ja vielä edit: tiedoston nimi tallentuu aina tuohon:
$_FILES['file']['name']
https://www.php.net/manual/en/features.file-upload.php#features.file-upload.post-method
Tuolla käsiteltiin tiedoston päätteiden tarkistusta:
https://www.ohjelmointiputka.net/keskustelu/4008-kuvagalleria-ei-toimi
Kokeilin tuolla tyylillä että lähettäisi tiedon mailiin...
Lähettää mailin heti sivulle mentäessä...
Eli ei kerkeä odotella tiedostonnimeä muuttujaan.
Kuinkas saisi niin että lähettäisi mailin vasta kun painetaan upload painiketta.
(Saisi tiedoston nimen mukaan.
<?php ob_start(); 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", 11126976); // yksittäisen tiedoston maksimikoko define("INDEX_PAGE", "lataa.php"); // määritetään redirect sivu if(!is_dir(UPLOAD_DIRECTORY)) { mkdir(UPLOAD_DIRECTORY, 0777); // jos hakemistoa ei ole olemassa, luodaan sellainen } if (IsSet($_FILES['file1'])) { // tarkistetaan että edes ensimmäinen kuva on tallentunut servulle temp hakemistoon, aloitetaan upitus for($i=1; $i<=MAX_COUNT; $i++) { $nimi[$i] = $_FILES['file'.$i]['name']; 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="Lataa_kuvat"></form><?php $email = "huuto41@hotmail.com"; $subject = "Testiviesti"; $message = "$nimi[1]"; $headers = "From: testi@testi.net<testi@testi.net> \r\n"; mail( $email, $subject, $message, $headers ); ob_end_flush(); exit;
Yritäppä seuraavaa:
<?php ob_start(); 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", 11126976); // yksittäisen tiedoston maksimikoko define("INDEX_PAGE", "lataa.php"); // määritetään redirect sivu if(!is_dir(UPLOAD_DIRECTORY)) { mkdir(UPLOAD_DIRECTORY, 0777); // jos hakemistoa ei ole olemassa, luodaan sellainen } if (IsSet($_FILES['file1'])) { // tarkistetaan että edes ensimmäinen kuva on tallentunut servulle temp hakemistoon, aloitetaan upitus for($i=1; $i<=MAX_COUNT; $i++) { $email = "huuto41@hotmail.com"; $subject = "Testiviesti"; $message = "$nimi[1]"; $headers = "From: testi@testi.net<testi@testi.net> \r\n"; mail( $email, $subject, $message, $headers ); $nimi[$i] = $_FILES['file'.$i]['name']; 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="Lataa_kuvat"></form><?php ob_end_flush(); exit; ?>
edit: pikkufiba, mut huomaat sen kyllä ;D
En kyllä saa päähäni miksi se lähettää viestin tuplasti... Toisen tyhjän...
No kun tuo on for loopissa. Pistä se
if (IsSet($_FILES['file1'])) { // tarkistetaan että edes ensimmäinen kuva on tallentunut servulle temp hakemistoon, aloitetaan upitus
jälkeen, ennen for looppia..
Sekä ['tmp_name'] tuohon ['file1'] perään!
Tai no en edes tiedä mitä yrität tehä, paha antaa neuvoja..
Tarkoitus oli tehdä tälläinen sydeemi missä on:
-----------\-------------\
etsikuva \tekstialue \
-----------\-------------\
...
lataapainike
Eli siis valikko jolla etsitään omalta koneelta kuvatiedostoja 10 kpl jokaisen vieressä lisätietoja texarea.
Tiedostonnimen ja lisätietoja kun aina saisi samaan muuttujaan
$kuva1
$kuva2
$kuva3
...
Eli tälläinen kuvien lisäys systeemi mihin saa myös kommentin.
<?php //tiedot taulukkoon $kuva1["nimi"] = $_FILES['file'.$i]['name']; $kuva1["details"] = $_POST['lisatietoja'.$i] //tiedot taulukosta print $kuva1["nimi"]; print $kuva1["details"]; //tai vaihtoehtoisesti jos taulukossa on enemmänkin tietoa foreach($kuva1 as $tieto) {print $tieto;} //ehkä järkevin vaihtoehto on kuitenkin laittaa kaikki tiedot samaan taulukkoon $kuvat[$i]["nimi"] = $_FILES['file'.$i]['name']; $kuvat[$i]["details"] = $_POST['lisatietoja'.$i] ?>
Antaa erroria
Parse error: parse error, unexpected T_PRINT in E:\web\kuvat\testi.php on line 7
4. riviltä puuttuu puolipiste (;)
$kuva1["details"] = $_POST['lisatietoja'.$i]
ja tuosta foreachista voi poistaa aaltosulkeet.
Erroria puskee aina vaan
Notice: Undefined variable: i in E:\web\kuvat\testi.php on line 3
Notice: Undefined index: file in E:\web\kuvat\testi.php on line 3
Notice: Undefined variable: i in E:\web\kuvat\testi.php on line 4
Notice: Undefined index: lisatietoja in E:\web\kuvat\testi.php on line 4
...
<?php //tiedot taulukkoon $kuva1["nimi"] = $_FILES['file'.$i]['name']; $kuva1["details"] = $_POST['lisatietoja'.$i]; //tiedot taulukosta print $kuva1["nimi"]; print $kuva1["details"]; //tai vaihtoehtoisesti jos taulukossa on enemmänkin tietoa foreach($kuva1 as $tieto) print $tieto; //ehkä järkevin vaihtoehto on kuitenkin laittaa kaikki tiedot samaan taulukkoon $kuvat[$i]["nimi"] = $_FILES['file'.$i]['name']; $kuvat[$i]["details"] = $_POST['lisatietoja'.$i] ?>
Yrititkö laittaa ton mun esimerkin sinne koodin sekaan? Siis noi on vain esimerkkejä, kuinka voit tallettaa tietoa taulukkoon. Yritä vähän soveltaa! Tai jossei onnistu, niin alota vaikka tuolta: https://www.ohjelmointiputka.net/oppaat/opas.
edit: Ja käytä kooditageja!!! Vähän on kivempi lukea.
Aihe on jo aika vanha, joten et voi enää vastata siihen.