Я медленно работаю над загрузчиком изображений и задаюсь вопросом, почему при повторении моих переименованных файлов он дает мне один символ вместо всего. По какой-то причине это было бы так?
Он успешно загружает изображение как phil_546d196082606.jpg с другим номером для каждого изображения
Вот мой код
<?php
if (isset($_POST['addpart'])) {
$image = $_FILES['images']['tmp_name'];
$name = $_POST['username'];
$i = 0;
foreach ($image as $key) {
$fileData = pathinfo(basename($_FILES["images"]["name"][$i]));
$fileName = $name .'_'. uniqid() . '.' . $fileData['extension'];
move_uploaded_file($key, "image/" . $fileName);
copy("image/" . $fileName, "image_thumbnail/" . $fileName);
$i++;
}
echo 'Uploaded<br>';
$fileName1 = $fileName[0];
$fileName2 = $fileName[1];
$fileName3 = $fileName[2];
echo 'Main Image - '.$fileName1.'<br>';
echo 'Extra Image 1 - '.$fileName2.'<br>';
echo 'Extra Image 2 - '.$fileName3.'<br>';
echo '<hr>';
}
?>
$ filename - строка, а строки в php - это массивы, где каждая буква имеет индекс $ filename [o] - первая буква и так далее. Использование
$filename[]=$name .'_'. uniqid() . '.' . $fileData['extension'];
Попробуйте приведенный ниже код кода
$fileName[] = $name .'_'. uniqid() . '.' . $fileData['extension'];
move_uploaded_file($key, "image/" . end($fileName));
copy("image/" . end($fileName), "image_thumbnail/" . end($fileName));
$fileName = $name .'_'. uniqid() . '.' . $fileData['extension'];
Имя файла - это строка. Это: $ name. номер.
Как philip12345.
Итак, если у нас есть:
philip
012345
$fileName[0] = p
$fileName[1] = h
Также вы перезаписываете имя файла в каждом цикле. Попробуйте сохранить его в массиве и распечатать его, вот какой код:
$fileNames = array();
foreach ($image as $key)
{
$fileName = $name .'_'. uniqid() . '.' . $fileData['extension'];
fileNames[$i] = $fileName;
}
echo $fileNames[0];
echo $fileNames[1];
echo $fileNames[2];
Вы также можете использовать цикл foreach для перемещения по массиву с именами файлов и печати каждого элемента, это классно, потому что он будет работать с любым количеством изображений, а не только с 3:
foreach ($fileNames AS $key2)
{
echo ($key2);
}