Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2013, 15:47   #1
Masafi
Форумчанин
 
Регистрация: 12.03.2011
Сообщений: 113
Вопрос Загрузка, сканирование и переименование файла

Есть скрипт, загружающий фотографии на сайт:
PHP код:
if($_SESSION[''] >= '1') {
    echo
'
        <form action="admin.php" method="post" name="uploadpicture" enctype="multipart/form-data">
            <input name="name" type="text" value="Название картины" size="40"><br>
            <input name="doer" type="text" value="Ф.И.О. делающего" size="40"><br>
            Раздел:<br>
            <input type="radio" name="iow" value="1"> Грамоты<Br>
            <input type="radio" name="iow" value="2"> Детские работы<Br>
            <input type="radio" name="iow" value="3"> Взрослые работы<Br>
            <input type="radio" name="iow" value="4"> Авторские работы<Br>
            <input type="file" name="photo" accept="image/*,image/jpeg,image/png,image/bmp,image/gif,image/jpg"><br>
            <input name="trueuploadpicture" type="submit" value="Отправить"><br>
        </form>'
;
    if(isset(
$_POST['name'],$_POST['doer'],$_FILES['photo'])) {
        if(
$_FILES["filename"]["size"] > 1024*3*1024)
        {
            echo (
"Размер файла превышает три мегабайта");
            exit;
        }
        if(
is_uploaded_file($_FILES["photo"]["tmp_name"]))
        {
            
move_uploaded_file($_FILES["photo"]["tmp_name"], "images/works/".$_FILES["photo"]["name"]);
        }
        else {
            echo(
"Ошибка загрузки файла");
        }
    }

Надо, чтобы перед перемещением в директорию (images/works/) файл переименовывался так:
Если в папке нет ни одного фото (или файла), то называем 1.формат
Если есть 1.формат, то называем 2.формат
Если есть 2.формат, то 3.формат
Если есть 3.формат, то 4.формат...
Как произвести сканирование имен файлов, записать наибольшее значение, и переименовать (rename, это я знаю ) на следующую цифру???

Последний раз редактировалось Masafi; 06.04.2013 в 16:00.
Masafi вне форума Ответить с цитированием
Старый 06.04.2013, 16:35   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,567
По умолчанию

Посмотрите на scandir.
Arigato вне форума Ответить с цитированием
Старый 06.04.2013, 16:45   #3
Masafi
Форумчанин
 
Регистрация: 12.03.2011
Сообщений: 113
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Посмотрите на scandir.
Посмотрел, буду разбираться. И на том спасибо
Masafi вне форума Ответить с цитированием
Старый 06.04.2013, 18:21   #4
D!zel
Пользователь
 
Регистрация: 23.12.2008
Сообщений: 74
По умолчанию

Если я правильно понял, вам нужно проверить, существует ли файл, если существует, то загружаемый (новый) нужно переименовать, если не существует файла с таким же именем - не трогать имя нового файла. Я правильно понял?
D!zel вне форума Ответить с цитированием
Старый 07.04.2013, 12:42   #5
Masafi
Форумчанин
 
Регистрация: 12.03.2011
Сообщений: 113
По умолчанию

Цитата:
Сообщение от D!zel Посмотреть сообщение
Если я правильно понял, вам нужно проверить, существует ли файл, если существует, то загружаемый (новый) нужно переименовать, если не существует файла с таким же именем - не трогать имя нового файла. Я правильно понял?
Не совсем: мне надо чтобы ВСЕ файлы переименовывались ПО НУМЕРАЦИИ, т. е:
загружаем файл img124234.jpeg
проверяем, есть ли в папке какие нибудь файлы
1. если нет, называем 1
2. если есть, смотрим, какие файлы есть:
если есть 1, называем 2
если есть 2, называем 3
если есть 31435315, называем 31435316...
Получается, что в папке нету файлов с буквами, и все файлы пронумерованы как надо
А потом название файла вносилось в бд.

Последний раз редактировалось Masafi; 07.04.2013 в 12:51.
Masafi вне форума Ответить с цитированием
Старый 07.04.2013, 13:46   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,567
По умолчанию

Проверяйте в цикле на file_exists
Arigato вне форума Ответить с цитированием
Старый 07.04.2013, 13:59   #7
D!zel
Пользователь
 
Регистрация: 23.12.2008
Сообщений: 74
По умолчанию

file_exist - будет долго, я думаю, т.к. ТС нужно получить наибольшее имя файла, а потом прибавить к нему 1. Как я понял.
Если так, используйте scandir, как предложил Arigato, загоняйте полученные в результате работы массив в переменную, и выбирайте имя с наибольшим числом, а потом просто прибавляете к нему 1. Если же массив не содержит ничего (count($массив)), то также прибавляете единицу и записываете файл под новым именем.
Логика скрипта примерно такая должна быть, как я себе это представляю. Может есть варианты и получше.

Последний раз редактировалось D!zel; 07.04.2013 в 17:20.
D!zel вне форума Ответить с цитированием
Старый 07.04.2013, 15:24   #8
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,567
По умолчанию

Если все дублируется в базу, то проще одним запросом из базы получить последний номер.
Arigato вне форума Ответить с цитированием
Старый 07.04.2013, 15:45   #9
D!zel
Пользователь
 
Регистрация: 23.12.2008
Сообщений: 74
По умолчанию

Arigato, согласен.
D!zel вне форума Ответить с цитированием
Старый 07.04.2013, 20:29   #10
Masafi
Форумчанин
 
Регистрация: 12.03.2011
Сообщений: 113
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Если все дублируется в базу, то проще одним запросом из базы получить последний номер.
Я тупой -_-... Спасибо большое
Masafi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переименование файла в цикле nicklan Win Api 4 25.02.2012 22:27
Переименование файла ZET78 PHP 1 09.08.2010 10:22
Переименование файла xakkkkker Общие вопросы Delphi 4 15.03.2010 13:51
переименование файла алексей209 Операционные системы общие вопросы 2 18.12.2009 18:03
Переименование файла Патрон Общие вопросы Delphi 17 09.04.2008 16:50