Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 06.02.2013
Сообщений: 31

Как сделать проверку на наличие похожего имени файла и запрос нового имени файла?

08.07.2013, 13:39. Показов 2672. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При загрузке изображения присваивается имя foto.jpg. Вопрос, как сделать проверку на то что фото с таким именем существует и если он находит что такое имя есть то он присваивает новое имя например: foto1.jpg потом foto2.jpg и так далее?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.07.2013, 13:39
Ответы с готовыми решениями:

Сделать проверку на наличие похожего имени файла и запрос нового имени файла
Пользователь задает имя для создания файла. Вопрос, как сделать проверку на наличие похожего имени файла и запрос нового имени файла?

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

Генерирование нового имени для файла
Добрый день! Вот смотрите. Есть форма, на которой присутствует FileUpload, с помощью которого пользователь загружает изображение на...

12
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,844
08.07.2013, 15:21
в базе храни имена файлов
0
 Аватар для Rol1k
85 / 85 / 31
Регистрация: 14.06.2013
Сообщений: 207
08.07.2013, 15:42
file_exists
1
zachem
08.07.2013, 15:53
PHP
1
2
3
4
5
6
7
8
9
10
<?php
$i = 0;
$filename = 'foto.jpg';
while(file_exists($filename)){
++$i;
$filename = 'foto'. $i.'.jpg';
}
echo $filename;
 
?>
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,844
08.07.2013, 15:58
Цитата Сообщение от zachem Посмотреть сообщение
PHP
1
2
3
4
5
6
7
8
9
<?php
$i = 0;
$filename = 'foto.jpg';
while(file_exists($filename)){
++$i;
$filename = 'foto'. $i.'.jpg';
}
echo $filename;
?>
сколько он будет перебирать если у меня 15 тысяч файлов?
1
zachem
08.07.2013, 16:14
Цитата Сообщение от crautcher Посмотреть сообщение
сколько он будет перебирать если у меня 15 тысяч файлов?
Предложи свой вариант, если мой не понравился. Я ответил ТС согласно его вопросу.
Цитата Сообщение от babolex Посмотреть сообщение
как сделать проверку на то что фото с таким именем существует и если он находит что такое имя есть то он присваивает новое имя например: foto1.jpg потом foto2.jpg и так далее?
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,844
08.07.2013, 16:29
Цитата Сообщение от zachem Посмотреть сообщение
Предложи свой вариант, если мой не понравился.
такто уже предложил
0
0 / 0 / 0
Регистрация: 06.02.2013
Сообщений: 31
08.07.2013, 16:42  [ТС]
Цитата Сообщение от crautcher Посмотреть сообщение
в базе храни имена файлов
А как это будет работать?
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,844
08.07.2013, 16:48
Цитата Сообщение от babolex Посмотреть сообщение
А как это будет работать?
Достаешь айди последнего файла через запрос и приклееивешь айди +1 к имени файла, далее записываешь в базу инфу о новом файле.
0
0 / 0 / 0
Регистрация: 06.02.2013
Сообщений: 31
08.07.2013, 16:53  [ТС]
Ясно, щас буду и то и то пробовать.
0
 Аватар для Rol1k
85 / 85 / 31
Регистрация: 14.06.2013
Сообщений: 207
08.07.2013, 16:59
Цитата Сообщение от babolex Посмотреть сообщение
присваивает новое имя например: foto1.jpg потом foto2.jpg и так далее
Обязательно имя должно иметь вид "foto"+порядковый номер?
foto1.jpg
foto2.jpg
foto3.jpg
foto4.jpg

А если какое - то изображение будет удалено?

Может лучше добавлять уникальное значение?
Например текущее время+случайное число.

И хранить имена в базе.
0
0 / 0 / 0
Регистрация: 06.02.2013
Сообщений: 31
08.07.2013, 19:57  [ТС]
Цитата Сообщение от Rol1k Посмотреть сообщение
Обязательно имя должно иметь вид "foto"+порядковый номер?
Да не совсем обязательно. Я щас хочу сделать чтоб из формы где нужно загрузить фото + добавить описание, описание и имя фото загружалось в БД, а само фото на сервер.
Просто потом мне надо будет искать фото по имени в бд и что бы не искать FVfg_gs.jpg, а искать например foto2.jpg.
Цитата Сообщение от Rol1k Посмотреть сообщение
Может лучше добавлять уникальное значение?
Например текущее время+случайное число.

И хранить имена в базе.
Можно и так сделать.

Добавлено через 2 часа 36 минут
Сделал вроде всё работает спс.
Если надо будет кому то:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php  
$i = 0;
$path = 'tmp/'; //папка сохранения фото
//Обработка
if (isset($_POST['doUpload'])) 
{  
$data = $_FILES['userfile'];  
$tmp = $data['tmp_name'];
//проверки
if ($_FILES['userfile']['size'] > 1024 * 5 *1024)
{
echo "<p>Слишком большой размер изображения!</p>";
exit();
}
//Информация о файле
$info = @getimagesize($_FILES['userfile']['tmp_name']); 
  //Проверка формата
  if (preg_match('{image/(.*)}is', $info['mime'], $p))
  {  
        
  $newwidth = 320;//ширина 
  $filename = '/tmp/';
  while(file_exists($filename)){
  ++$i; 
  $filename = $path. 'foto'. $i.'.jpg';
  }
                                                                                                     
if(resize($tmp, $newwidth, $filename )){  
  echo "Изображение было успешно загружено!";  
  }  
  else {  
  echo "Произошла ошибка при загрузке изображения";  
  }  
  }
  else {  
  echo "Ошибка! Попытка загрузить файл недопустимого формата.";    
 }  
}  
 
 function resize($photo_src, $width, $name){  
 $parametr = getimagesize($photo_src);  
 list($width_orig, $height_orig) = getimagesize($photo_src);  
 $ratio_orig = $width_orig/$height_orig;  
 $new_width = $width;  
 $new_height = $width / $ratio_orig;  
 $newpic = imagecreatetruecolor($new_width, $new_height);  
 switch ( $parametr[2] ) {    
   case 2: $image = imagecreatefromjpeg($photo_src);  
   break;  
  case 3: $image = imagecreatefrompng($photo_src);  
   break;  
 }  
 imagecopyresampled($newpic, $image, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig);  
 imagejpeg($newpic, $name, 100);  
 return true;  
 }
?>
HTML5
1
2
3
4
<form name="upload" action="upload.php" method="POST" ENCTYPE="multipart/form-data">  
  Вбери файл для загрузки: <input type="file" name="userfile"></ br>  
  <input type="submit" name="doUpload" value="Загрузить">  
 </form>
Скрипт загрузки изображений с реcайзом и переименованием
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
09.07.2013, 00:21

Не по теме:

Цитата Сообщение от babolex Посмотреть сообщение
PHP
1
2
3
4
while(file_exists($filename)){
  ++$i; 
  $filename = $path. 'foto'. $i.'.jpg';
  }
PHP
1
2
while(file_exists($filename))
    $filename = $path. 'foto'. ++$i.'.jpg';
или вообще так
PHP
1
2
while( file_exists( ($filename = $path. 'foto'. ++$i.'.jpg') ) )
    ;


Цитата Сообщение от babolex Посмотреть сообщение
PHP
1
switch ( $parametr[2] )
а если gif ? И что станет с прозрачным фоном у png/gif ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.07.2013, 00:21
Помогаю со студенческими работами здесь

Проверка имени файла на наличие русских символов
Помоги,пожалуйста,осуществить проверку имени загружаемого файла на наличие русских символов и,если они там есть,вывести сообщение,что-то...

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

Задание имени нового создаваемого файла без указания расширения
На форме есть текстовое поле где пользователь задаёт имя создаваемого файла без указания расширения. Изначально предполагалось что в...

Переименование файла по шаблону и перенос нового имени в буфер обмена
Всем доброго времени суток. Задача: из имени файла создать текстовую ссылку и отправить в буфер обмена. В папке находятся файлы *.mpd....

Знак # в имени файла или как сделать ссылку
Есть файл C#.html Как из другого html-файла сделать ссылку на него, если знак # рассматривается как якорь? &lt;a href =...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru