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

0

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

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

}
?>
Теги:
rename
echo
upload

3 ответа

2
Лучший ответ

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

$filename[]=$name .'_'. uniqid() . '.' . $fileData['extension'];
  • 1
    Большое спасибо, буду ли я использовать одну и ту же строку $ filename [0] и $ filename [1] при вставке в разные столбцы строки?
  • 0
    @BrianCherdak Я не совсем понимаю вопрос, но $ filename [0] будет содержать имя и так далее.
Показать ещё 2 комментария
1

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

$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);
}
  • 0
    он использует $ key в цикле. для перемещения файлов: move_uploaded_file ($ key, "image /". $ fileName);
  • 0
    о, хорошо, перечитал, спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню