Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/34: Рейтинг темы: голосов - 34, средняя оценка - 4.88
 Аватар для Shoshona
30 / 30 / 37
Регистрация: 03.06.2014
Сообщений: 1,054

Проверка есть ли в папке файл с таким же именем

13.02.2017, 11:40. Показов 6261. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Нужно сделать закачку файла в папку, но чтобы названия не повторялись
загрузка у меня есть
PHP Скопировано
1
2
3
4
5
6
7
if($_FILES['loadfile']['error'] !== 4){
       $uploaddir = './images/photo/';
       $uploadfile = $uploaddir.basename($_FILES['loadfile']['name']);
       $foto = $_FILES['loadfile']['name'];
       move_uploaded_file($_FILES['loadfile']['tmp_name'], $uploadfile);
       $result = $foto;
       }
как мне сделать проверку на повторяемось и изменить имя скажем "имя.jpg"на "имя1.jpg" и так далее?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.02.2017, 11:40
Ответы с готовыми решениями:

Как проверить есть ли файл с таким именем на сервере?
Господа программисты, подскажите где ошибка в следующем скрипте. Задача такая: нужно проверить, есть ли на сервере файл с именем,...

Проверить есть ли файл с заданным именем в папке
Здравствуйте. Мне необходимо проверить есть ли файл с таким именем в папке, и если есть, то записать в него данные. Записать и я...

Проверить есть ли в папке файл с заданным именем; если нет такого, то открыть другой
Когда открываю форму она загружает в два picturebox 2 картинки, необходимо проверить есть ли в папке pictures картинки с именем pic1.jpg и...

8
 Аватар для PantiL
26 / 26 / 10
Регистрация: 10.03.2016
Сообщений: 73
13.02.2017, 11:57
Если имена файлов не имеют значения, то при загрузке давайте файлу уникальное имя, например с использованием функции time(). Добавляя к имени файла вывод функции или полностью переименовывая его в вывод функции.
Ну или перед перемещение файла из временной папки проверять существует ли файл функцией file_exists.
0
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
13.02.2017, 12:23
Лучший ответ Сообщение было отмечено Shoshona как решение

Решение

если у Вас php5.2 и выше то можно так
PHP Скопировано
1
2
3
4
5
6
7
8
9
10
11
if($_FILES['loadfile']['error'] !== 4){
    $uploaddir = './images/photo/';
    $uploadfile = $uploaddir.basename($_FILES['loadfile']['name']);
    if (file_exists($uploadfile)) {
        $path_parts = pathinfo($uploadfile);
        $uploadfile = $path_parts['dirname'].'/'.$path_parts['filename'].'1.'.$path_parts['extension'];
    }
    $foto = $_FILES['loadfile']['name'];
    move_uploaded_file($_FILES['loadfile']['tmp_name'], $uploadfile);
    $result = $foto;
}
Добавлено через 3 минуты
но правда файл с новым именем также может существовать, поэтому тут лучше делать уникальное имя, либо как-то считать одинаковые имена, например сделать чтобы файлы сохранялись так: "имя[1].jpg", "имя[2].jpg" и т.д.

Добавлено через 4 минуты
или вместо условия if поставить цикл while и тогда будет так: "имя1.jpg", "имя11.jpg", "имя111.jpg" и т.д. , но тогда стоит ограничить цикл
1
 Аватар для Shoshona
30 / 30 / 37
Регистрация: 03.06.2014
Сообщений: 1,054
13.02.2017, 12:49  [ТС]
Igsit, спасибо, я сделал вот так
PHP Скопировано
1
2
3
4
5
6
7
8
9
10
if (file_exists($uploadfile)) {
        $path_parts = pathinfo($uploadfile);
        $chars = 'abcdefhjigklmnotqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
        $numChars = strlen($chars);
        $string = '';
        for ($i = 0; $i < 8; $i++) {
        $string .= substr($chars, rand(1, $numChars) - 1, 1);
        }
        $uploadfile = $path_parts['dirname'].'/'.$path_parts['filename']$string.'.'.$path_parts['extension'];
    }
но не уверен, что $string правильно вставил
0
 Аватар для PantiL
26 / 26 / 10
Регистрация: 10.03.2016
Сообщений: 73
13.02.2017, 13:22
Shoshona, ну зачем такие сложности
PHP Скопировано
1
$filename = file_exists($uploadfile)? time().$uploadfile: $uploadfile;
Если файл уже есть, то к его имени прибавляем временную метку, если файла нет, то ничего не делаем.
0
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
13.02.2017, 13:52
Цитата Сообщение от Shoshona Посмотреть сообщение
но не уверен, что $string правильно вставил
неправильно, надо так
PHP Скопировано
1
$uploadfile = $path_parts['dirname'].'/'.$path_parts['filename'].$string.'.'.$path_parts['extension'];
точку забыли )
0
 Аватар для Shoshona
30 / 30 / 37
Регистрация: 03.06.2014
Сообщений: 1,054
13.02.2017, 13:59  [ТС]
Igsit, спасибо
0
 Аватар для PantiL
26 / 26 / 10
Регистрация: 10.03.2016
Сообщений: 73
13.02.2017, 14:37
Shoshona, Igsit, и все же я бы настоял на переименовке всех загружаемых файлов. Мало ли с какими именами пользователи будут загружать фотографии, зачем нам на сервере чехарда из непонятных файлов.

PHP Скопировано
1
2
3
4
5
6
7
8
9
10
<?php
//Папка для загрузки
$uploadDir      = "upload_foto/";
//Имя загружаемого файла на компе у пользователя        
$uploadFile     = $_FILES['userfile']['name'];
//Инфо о файле
$pathInfo       = pathinfo($uploadFile);
//Полный путь назначения для файла с уникальным именем
$newFileName    = $uploadDir.uniqid("", TRUE).'.'.$pathInfo['extension']; 
?>
0
142 / 142 / 63
Регистрация: 18.07.2014
Сообщений: 473
13.02.2017, 15:16
Цитата Сообщение от PantiL Посмотреть сообщение
и все же я бы настоял на переименовке всех загружаемых файлов
согласен с Вами на все 100 )
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.02.2017, 15:16
Помогаю со студенческими работами здесь

Как остановить сохранение, если файл с таким именем уже существует
есть код сохранения данных из формы в TXT файл. вопрос: Как остановить сохранение, если в папке уже есть файл с тем же имененем? ...

Работа с файлами: каждый файл переместить в директорию с таким же именем (расширения отбрасывать).
Здравствуйте, есть такое задание: Каждый файл переместить в директорию с таким же именем (расширения отбрасывать). Алгоритм составил, а...

Выбрать нужный файл в папке с неполным именем
Есть директория &quot;С:&quot; в которой есть папка &quot;data&quot;, а в этой папке куча папок и один файл, папки и файл имеют разные имена, знаю длину имени...

Не могу открыть файл, размещенный в папке с именем на русском языке
Файл на D:\Решетова_Н\Галкин\Всякое Если помещаю файл непосредственно на D - все работает. Думаю дело в русскоязычных названиях папок.......

Перед выполнением задания необходимо создать в рабочей папке файл SIMP.FOR. Создать командный файл с именем _E
Перед выполнением задания необходимо создать в рабочей папке файл SIMP.FOR. Создать командный файл с именем _EXIST.BAT, выполняющий...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Списки и кортежи в Python: различия, особенности, применение
py-thonny 13.04.2025
Python славится своей гибкостью при работе с данными. В арсенале языка есть две основные последовательные структуры данных, которые программисты используют ежедневно — списки и кортежи. Эти структуры. . .
Middleware в ASP.NET Core
UnmanagedCoder 13.04.2025
В ASP. NET Core термин "middleware" занимает особое место. Что же это такое? Middleware представляет собой программные компоненты, которые формируют конвейер обработки HTTP-запросов в приложении. . . .
Таблицы лута в Unity с MinMaxCurve и AnimationCurve
GameUnited 12.04.2025
Создание сбалансированного лута в играх — задача не из простых. Разработчики постоянно ищут способы настройки систем выпадения предметов, которые будут одновременно справедливыми для игроков и. . .
std::expected в C++: Управление ошибками
bytestream 12.04.2025
Обработка ошибок всегда была важной и одновременно сложной задачей в программировании на C++. На протяжении долгого времени разработчики использовали различные подходы: возвращаемые коды ошибок,. . .
Nullable типы и операторы объединения null в C#
UnmanagedCoder 12.04.2025
Многие шутят, что null — это миллиардная ошибка в программировании. И в этой шутке только доля шутки. Тони Хоар, создатель null-ссылки, сам назвал её своей "ошибкой на миллиард долларов". Почему?. . .
Аутентификация и авторизация JWT в микросервисах с API Gateway
stackOverflow 12.04.2025
В традиционных монолитных приложениях безопасность часто реализуется как единый защитный периметр - пользователь проходит аутентификацию один раз, после чего получает доступ ко всем функциям системы. . . .
TypeScript: Интерфейсы vs Типы
run.dev 11.04.2025
Современная разработка на JavaScript сталкивается с множеством проблем при масштабировании проектов. Типизация кода стала хорошим инструментом, помогающим избежать ошибок во время выполнения,. . .
Управление топиками и разделами Kafka
Javaican 11.04.2025
Apache Kafka — распределенная платформа потоковой передачи данных, которая стала стандартом для построения высоконагруженных систем обмена сообщениями. В современной архитектуре микросервисов,. . .
Миграция монолита в Event-Driven микросервисную архитектуру на C#
stackOverflow 11.04.2025
Монолитная архитектура – классический подход к разработке программного обеспечения. Это приложение, построенное как единое целое, где все компоненты тесно связаны между собой. Большинство проектов. . .
Go в Kubernetes: Управление ресурсами
golander 11.04.2025
Разработчики Go-приложений в Kubernetes часто сталкиваются с неожиданными проблемами производительности и даже внезапными отказами контейнеров. Причина этого кроется в особенностях взаимодействия. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер