@korben_duglas
Самообразование через самопознание)

Автоматическое переименование, на имена, которые написаны внутри формы, загруженных файлов в сами формы?

Добрый день
Стоит такая задача: нужно, чтобы файл, который поместили в форму с его исходным наименованием, был переименован на имя, которое служило надписью на пустой форме (например: "заявление и согласие на обработку персональных данных". И эта надпись должна будет служить именем файла, который загрузили на сайт).

P.S. Этих форм несколько и у каждой есть индивидуальное название, поэтому "rename()" не подойдет(.

Буду рад Вашей помощи и ответам).
  • Вопрос задан
  • 121 просмотр
Решения вопроса 2
@ukoHka
Всего понемногу
При загрузке файла через формы он автоматически сохраняется на сервере под сгенерированным именем, которое можно получить из $_FILES['file']['tmp_name']. После завершения обработки запроса этот файл удалится автоматически, поэтому его необходимо сохранить в отдельном месте, а для этого нужно указать имя. И тут можно указать любое имя, включая значения полей из массива $_POST.
В частности, можно продублировать надпись в скрытое поле filename и на стороне сервера заменить $_FILES['file']['name'] на $_POST['filename'].
Ответ написан
@IS-Builder
~ PHP-8 & REGEXP - This is a really powerful kit ~
Чтобы сделать такое на PHP (в отличии от JS или JQuery), понадобится задавать название формы динамически в переменной, и подставлять эту переменную вместо имени файла. Если форм и их названий несколько, то вместо переменной нужно использовать массив с названиями, и циклы. Например:
Code
<?php

$formNames = [
    'Заявление и согласие на обработку персональных данных',
    'Что-то ещё'
];

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    foreach ($_FILES['userFile']['name'] as $k => $name) {
        $filename = $formNames[$k] . '.' . pathinfo($name, PATHINFO_EXTENSION);
        $uploadFile = __DIR__ . DIRECTORY_SEPARATOR . $filename;
        move_uploaded_file($_FILES['userFile']['tmp_name'][$k], $uploadFile);
    }
}

?>

<form enctype="multipart/form-data" method="post">
    <?php foreach ($formNames as $formName) { ?>
        <p><?=$formName?><br><input type="file" name="userFile[]"></p>
    <?php } ?>
    <input type="submit" value="Отправить">
</form>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы