Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: multi upload

Sivun loppuun

karvinen [04.03.2004 15:21:11]

#

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;
?>

Juhis [04.03.2004 15:39:39]

#

$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

ajv [04.03.2004 15:49:17]

#

Tuolla käsiteltiin tiedoston päätteiden tarkistusta:

https://www.ohjelmointiputka.net/keskustelu/4008-kuvagalleria-ei-toimi

karvinen [04.03.2004 17:58:42]

#

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;

ajv [04.03.2004 18:44:04]

#

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

karvinen [04.03.2004 19:56:14]

#

En kyllä saa päähäni miksi se lähettää viestin tuplasti... Toisen tyhjän...

Juhis [04.03.2004 20:00:10]

#

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..

karvinen [04.03.2004 20:47:06]

#

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.

ajv [04.03.2004 21:23:44]

#

<?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]
?>

karvinen [05.03.2004 19:37:47]

#

Antaa erroria

Parse error: parse error, unexpected T_PRINT in E:\web\kuvat\testi.php on line 7

sooda [05.03.2004 19:39:29]

#

4. riviltä puuttuu puolipiste (;)

$kuva1["details"] = $_POST['lisatietoja'.$i]

ja tuosta foreachista voi poistaa aaltosulkeet.

karvinen [06.03.2004 08:04:18]

#

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]
?>

ajv [06.03.2004 12:19:09]

#

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.php?tunnus=phpj

edit: Ja käytä kooditageja!!! Vähän on kivempi lukea.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta