| 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: 10 let
|
|||
0