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

Переименование при загрузке через форму

02.03.2015, 17:48. Показов 5445. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста, все перерыл уже! Как сделать переименование файла при загрузке через форму. Например,
Пользователь загружает файл с произвольным именем .doc и ему нужно ввести данные в 4 формы:
Форма1: группа
Форма2: фамилия
форма3: имя
форма4: номер
..
То есть загруженный на сервер файл должен иметь следующее имя: группа_фамилия_имя_номер.doc
Напишите пожалуйста скрипт..
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.03.2015, 17:48
Ответы с готовыми решениями:

Переименование файлов при загрузке
Необходимо переименовывать загруженный файл, если выбрана переменная newfilename $id = $_GET; $id = trim($id); ...

Ресайз фотки при загрузке на сайт и её переименование
Привет всем!Помогите мне пожалуйста если можете.2 недели как изучаю PHP, до этого изучал HTML,и вот незадача:хочу сделать загрузку...

Ошибка при добавлении данных в бд через форму
вот action: <? require_once '../config.php'; $name_post = $_POST; $cat = $_POST; $mini_desc = $_POST; $description =...

6
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
02.03.2015, 18:08
PHP
1
$filename = $group . '_' . $lastname . '_' . $firstname . '_' . $number . '.' . $extension;
Где $extension - расширение файла.
0
0 / 0 / 0
Регистрация: 02.03.2015
Сообщений: 9
02.03.2015, 18:11  [ТС]
а куда это писать??
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
02.03.2015, 18:20
В скрипт загрузки файлы и обработки Вашей формы.
0
0 / 0 / 0
Регистрация: 02.03.2015
Сообщений: 9
02.03.2015, 20:09  [ТС]
спасибо! а где объявлять переменные $group, $lastname и все остальные?
Имеется такая форма
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
<form method="post" action="main.php">
<strong>Номер Группы:</strong><br />
<input type="text" name="group" size="30"/>
<br />
<strong>Тип работы (Л-лабораторная, П-практическая, К-курсовая, Д-доклад):</strong><br />
<input name="type" type="text" size="30" />
<br />
<strong>Код Дисциплина (Пример: СБД)</strong><br />
<input name="disc" type="text" size="30" />
<br />
<strong>Номер семестра</strong><br />
<input name="sem" type="text" size="30" />
<br />
<strong>Номер работы</strong><br />
<input name="number" type="text" size="30" />
<br />
<strong>Ваша Фамилия:</strong><br />
<input name="lastname" type="text" size="30" />
<br />
<strong>Ваше имя:</strong><br />
<input name="firstname" type="text" size="30" />
<br />
 
</form>
  <form action="main.php" method="post" enctype="multipart/form-data">
      <input type="file" name="filename"><br> 
      <input type="submit" value="Загрузить"><br>
      </form>
и сам обработчик
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 <?php 
$allowed_filetypes = array('.doc','.docx'); // допустимые форматы. 
$max_filesize = 524288; // Допустимый размер загружаемого файла. 
$upload_path = 'upload/'; // Директория для загрузки. 
$new_name = "000001"; // Новое имя для файла.(типа получено динамически =) ) 
 
$filename = $group . '_' . $lastname . '_' . $firstname . '_' . $number . '.' . '.doc'; 
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); 
if(strlen($_FILES['filename']['tmp_name']) < 1) 
die('Сперва укажите файл для загрузки.'); 
if(!in_array($ext,$allowed_filetypes)) 
die('Данный формат не поддерживается.'); 
if(filesize($_FILES['filename']['tmp_name']) > $max_filesize) 
die('Файл превышает допустимые значения.'); 
if(!is_writable($upload_path)) 
die('Директория закрыта от записи. обратитесь к системному администратору.'); 
if(move_uploaded_file($_FILES['filename']['tmp_name'],$upload_path . $filename)) 
die('Ваш фаил успешно загружен. <a href="' . $upload_path . $filename . '">смотреть</a><br> <a href="index2.php">загрузить ещё</a>');  
else 
echo 'При загрузке возникли ошибки. Попробуйте ещё раз.'; 
?>
Но вылезает куча ошибок!! Помогите исправить пожалуйста.. я в php слабо соображаю
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
03.03.2015, 07:39
Лучший ответ Сообщение было отмечено ArtemSpb как решение

Решение

Зачем Вы сделали 2 формы? Нужна только одна. Вот форма:
HTML5
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
<form method="post" action="main.php" enctype="multipart/form-data">
    <strong>Номер Группы:</strong><br />
    <input type="text" name="group" size="30"/>
    <br />
    <strong>Тип работы (Л-лабораторная, П-практическая, К-курсовая, Д-доклад):</strong><br />
    <input name="type" type="text" size="30" />
    <br />
    <strong>Код Дисциплина (Пример: СБД)</strong><br />
    <input name="disc" type="text" size="30" />
    <br />
    <strong>Номер семестра</strong><br />
    <input name="sem" type="text" size="30" />
    <br />
    <strong>Номер работы</strong><br />
    <input name="number" type="text" size="30" />
    <br />
    <strong>Ваша Фамилия:</strong><br />
    <input name="lastname" type="text" size="30" />
    <br />
    <strong>Ваше имя:</strong><br />
    <input name="firstname" type="text" size="30" />
    <br />
    <input type="file" name="file"><br> 
    <input type="submit" value="Загрузить"><br>
</form>
А обработчик примерно такой:
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
<?php 
    /**
    * Функция для получения данных из POST
    * @param string $key - ключ нужно переменной
    * 
    * @return значение по ключу
    */
    function post( $key ){
        return
            isset( $_POST[$key] ) ? trim( $_POST[$key] ) : null;
    }
    
    # Допустимые форматы файлов
    $allowed_filetypes = array(
        'doc',
        'docx'
    );
    
    # Допустимый размер загружаемого файла
    $max_filesize = 1382288;
    
    # Директория для загрузки
    $upload_path = 'upload/';
    
    # Массив для получения данных от пользователя
    $data = array();
    
    # Получаем данные из формы
    $data['group']     = post('group');
    $data['lastname']  = post('lastname');
    $data['firstname'] = post('firstname');
    $data['number']    = post('number');
    $file              = $_FILES['file'];
    
    # Тут можно проверить, заполнены ли данные
    # ...
 
    # Получаем расширение файла
    $extension = pathinfo( $file['name'], PATHINFO_EXTENSION );
 
    # Формируем имя файла
    $filename = implode( '_', $data ) . '.' . $extension;
 
    if( $file['error'] ) 
        die('Сперва укажите файл для загрузки.'); 
    if( !in_array($extension, $allowed_filetypes) ) 
        die('Данный формат не поддерживается.'); 
    if(filesize($file['tmp_name']) > $max_filesize) 
        die('Файл превышает допустимые значения.'); 
    if( !is_writable($upload_path) ) 
        die('Директория закрыта от записи. Обратитесь к системному администратору.'); 
    if( move_uploaded_file($file['tmp_name'], $upload_path . $filename)) 
        die('Ваш файл успешно загружен. <a href="' . $upload_path . $filename . '">смотреть</a><br> <a href="index2.php">загрузить ещё</a>');  
    else 
        echo 'При загрузке возникли ошибки. Попробуйте ещё раз.'; 
?>
Но если укажите там кириллические символы - то файл сохранится с некорректным именем, в таком случае имя нужно будет перекодировать в кодировку, которую использует файловая системы Вашей операционной системы.
2
0 / 0 / 0
Регистрация: 02.03.2015
Сообщений: 9
03.03.2015, 09:26  [ТС]
Спасибо вам большое !)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.03.2015, 09:26
Помогаю со студенческими работами здесь

Ошибка при добавлении записи через форму в БД
Делаю админ-панель на сайте и возникла проблема, вылетает ошибка при попытке отправить данные. Warning: mysql_query() expects...

Квакозябры при вводе русских символов в MYSQL через форму
Здравствуйте форумчане! Никак не получается правильно ввести русский текст в таблицу MYSQL через форму. Отображаются квакозябры. 1....

При добавления текста через форму отображается текст с пробелами
Здравствуйте уважаемые, проблема такая что, при добавления текста через &lt;form&gt; отображается текст с пробелами. А именно &quot; текст текст ...

При загрузке формы и при определенной дате выгружать форму
Как сделать так, чтобы при загрузке формы и при определенной дате форма выгружалась. Я думаю так: Private Sub Form_Load() if Date=...

Скрыть форму в трей при загрузке!
Создал иконку в трей, если сворачиваю, то программу видно только в трей! Все как и хотел, но нужно еще чтобы при загрузке программа была...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru