при повторном отображении переименованного файла показывается один символ

Я медленно работаю над загрузчиком изображений и удивляюсь, почему при отображении моих переименованных файлов это дает мне один символ вместо всего этого.
Есть ли причина, по которой он будет этим заниматься?
введите описание изображения здесь

Это делает, успешно загрузить изображение как 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>';

}
?>

0

Решение

$ filename — это строка, а строки в php — это массивы, в которых каждая буква имеет индекс. $ filename [o] — первая буква и т. д. Использование.

$filename[]=$name .'_'. uniqid() . '.' . $fileData['extension'];
2

Другие решения

Попробуйте приведенный ниже блок кода

$fileName[] = $name .'_'. uniqid() . '.' . $fileData['extension'];
move_uploaded_file($key, "image/" . end($fileName));
copy("image/" . end($fileName), "image_thumbnail/" . end($fileName));
1

$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);
}
1
По вопросам рекламы [email protected]