Autor | Zpráva | ||
---|---|---|---|
Vilak Profil |
Zdarec. Chci uploadnout více obrázků a nevím, kde mám chybu.
vkadani-fotografii.php: <form action="include/scripts/add-images.php" method="POST" type="multipart/form-data"> <h2>Vložit nové fotografie:</h2> <input type="hidden" name="author" <?php echo "value=\"$author\""; ?>> <input type="file" name="images[]" min(1) max(30) multiple="multiple"/> <input type="submit" name="go" value="Nahrát na server"> </form> add-images.php: <?php if (isset($_POST['go'])) { //vytvoření složek if (!file_exists("../../img/fotky-clanky")) { mkdir("../../img/fotky-clanky", 0777); } $aj = array("January","February","March","April","May","June","July","August","September","October","November","December"); $cz = array("leden","unor","brezen","duben","kveten","cerven","cervenec","srpen","zari","rijen","listopad","prosinec"); $file = str_replace($aj, $cz, date("Y-m-F", time())); if (!file_exists("../../img/fotky-clanky/$file")) { mkdir("../../img/fotky-clanky/$file", 0777); } $upload_dir = "../../img/fotky-clanky/$file"; //nahrávání fotek $suffix = array("jpg", "jpeg", "png", "gif", "ico"); $message = ""; include "../prevodni-tabulka.php"; if (isset($_FILES['images']) && is_array($_FILES['images']['name'])) { $counter = 0; $not_upladed = 0; $suffix = array_flip($suffix); foreach ($_FILES['images']['name'] as $key => $name) { $filename = basename($name); $tmpname = $_FILES['images']['tmp_name'][$name]; if (!is_uploaded_file($tmpname) || !isset($suffix[strtolower(pathinfo($filename, PATHINFO_EXTENSION))])) { $not_upladed++; continue; } if (move_uploaded_file($tmpname, "{$upload_dir}".DIRECTORY_SEPARATOR."{$filename}")) { $counter++; } } echo "Bylo nahráno {$counter} z ".sizeof($_FILES['images']['name']." obrázků"); } } ?> Předem děkuji za veškeré odpovědi. |
||
Davex Profil |
#2 · Zasláno: 15. 6. 2016, 23:21:36
Je chybně uzavřená závorka u
sizeof .
|
||
Vilak Profil |
#3 · Zasláno: 15. 6. 2016, 23:36:15
Ale i kdyby, tak by se soubory už nahrály, ne? Jinak opraveno, díky.
Když dám var_dump($_FILES['images']); pod include, tak mi to vypíše NULL. Nebude chyba v tom $_FILES['images'] někde?
Složky se mi vytvoří, ale cokoliv za 1. podmínkou se mi už nezobrazí a soubory se ani nenahrají. |
||
Davex Profil |
#4 · Zasláno: 16. 6. 2016, 00:36:29
Vilak:
„Ale i kdyby, tak by se soubory už nahrály, ne?“ To záleží na tom, jestli to vyvolá syntaktickou chybu nebo ne. Nechce se mi to testovat. „Když dám var_dump($_FILES['images']); pod include, tak mi to vypíše NULL.“
No vida, to už je lepší popis problému. Další chyba: enctype="multipart/form-data" |
||
Vilak Profil |
Fajn. Ale soubory se mi stále nenahrají.
script: <?php if (isset($_POST['go'])) { //vytvoření složek if (!file_exists("../../img/fotky-clanky")) { mkdir("../../img/fotky-clanky", 0777); } $aj = array("January","February","March","April","May","June","July","August","September","October","November","December"); $cz = array("leden","unor","brezen","duben","kveten","cerven","cervenec","srpen","zari","rijen","listopad","prosinec"); $file = str_replace($aj, $cz, date("Y-m-F", time())); if (!file_exists("../../img/fotky-clanky/$file")) { mkdir("../../img/fotky-clanky/$file", 0777); } $upload_dir = "../../img/fotky-clanky/$file"; //nahrávání fotek $suffix = array("jpg", "jpeg", "png", "gif", "ico"); $message = ""; include "../prevodni-tabulka.php"; if (isset($_FILES['images']) && is_array($_FILES['images']['name'])) { $counter = 0; $not_upladed = 0; $suffix = array_flip($suffix); foreach ($_FILES['images']['name'] as $key => $name) { $filename = basename($name); $tmpname = $_FILES['images']['tmp_name'][$name]; var_dump($tmpname); if (!is_uploaded_file($tmpname) || !isset($suffix[strtolower(pathinfo($filename, PATHINFO_EXTENSION))])) { $not_upladed++; continue; } if (move_uploaded_file($tmpname, "{$upload_dir}".DIRECTORY_SEPARATOR."{$filename}")) { $counter++; } } echo "Bylo nahráno {$counter} z ".sizeof($_FILES['images']['name'])." obrázků"; } } ?> Notice: Undefined index: 13015008_962678300517180_1641477490_n.jpg in C:\xampp\htdocs\esport\include\scripts\add-images.php on line 27 NULL Notice: Undefined index: 13020401_962678313850512_827779651_n.jpg in C:\xampp\htdocs\esport\include\scripts\add-images.php on line 27 NULL Notice: Undefined index: 13023323_962678280517182_870615520_n.jpg in C:\xampp\htdocs\esport\include\scripts\add-images.php on line 27 NULL Notice: Undefined index: 13023375_962678293850514_1705415581_n.jpg in C:\xampp\htdocs\esport\include\scripts\add-images.php on line 27 NULL Bylo nahráno 0 z 4 obrázků Tedy mám problém konkrétně s tímto řádkem $tmpname = $_FILES['images']['tmp_name'][$name]; . Ale co tam je špatně? Přece z pole images vyberu pole tmp_name, z kama vyberu prvek podle názvu name, ne?
_______________________________________________________________________________________ Ok. Vyřešil jsem to. Blbě jsem četl prvky v poli, které se indexovaly podle čísla. Konečné řešení: <?php if (isset($_POST['go'])) { //vytvoření složek if (!file_exists("../../img/fotky-clanky")) { mkdir("../../img/fotky-clanky", 0777); } $aj = array("January","February","March","April","May","June","July","August","September","October","November","December"); $cz = array("leden","unor","brezen","duben","kveten","cerven","cervenec","srpen","zari","rijen","listopad","prosinec"); $file = str_replace($aj, $cz, date("Y-m-F", time())); if (!file_exists("../../img/fotky-clanky/$file")) { mkdir("../../img/fotky-clanky/$file", 0777); } $upload_dir = "../../img/fotky-clanky/$file"; //nahrávání fotek $suffix = array("jpg", "jpeg", "png", "gif", "ico"); $message = ""; include "../prevodni-tabulka.php"; if (isset($_FILES['images']) && is_array($_FILES['images']['name'])) { $counter = 0; $not_upladed = 0; $suffix = array_flip($suffix); foreach ($_FILES['images']['name'] as $key => $name) { $filename = basename($name); $tmpname = $_FILES['images']['tmp_name'][$counter]; if (!is_uploaded_file($tmpname) || !isset($suffix[strtolower(pathinfo($filename, PATHINFO_EXTENSION))])) { $not_upladed++; continue; } if (move_uploaded_file($tmpname, "{$upload_dir}".DIRECTORY_SEPARATOR."{$filename}")) { $counter++; } } echo "Bylo nahráno {$counter} z ".sizeof($_FILES['images']['name'])." obrázků"; // tady místo toho když tak dat header pro přesměrování } } ?> <form action="include/scripts/add-images.php" method="POST" enctype="multipart/form-data"> <h2>Vložit nové fotografie:</h2> <input type="hidden" name="author" <?php echo "value=\"$author\""; ?>> <input type="file" name="images[]" min(1) max(30) multiple="multiple"/> <input type="submit" name="go" value="Nahrát na server"> </form> Davex, děkuji za pomoc. |
||
juriad Profil |
Ne. Viz php.net/manual/en/features.file-upload.post-method.php#example-411
„z kama vyberu prvek podle názvu key“ Další chyba je v HTML: <input type="file" name="images[]" min="1" max="30" multiple="multiple"/> |
||
Vilak Profil |
#7 · Zasláno: 17. 6. 2016, 11:41:58
Ok. Díky.
|
||
Časová prodleva: 8 let
|
0