Как изменить имя файла перед отправкой в файл upload_file.php?

Вопрос: У меня есть эта форма, которая позволяет пользователю загружать файл с файлом '.pdf' и загружать его на сервер. Однако я хотел бы переименовать файл в имя файла, выбранного в поле "Число". Как мне это сделать? Filename: Number:

Вопрос:

У меня есть эта форма, которая позволяет пользователю загружать файл с файлом ‘.pdf’ и загружать его на сервер. Однако я хотел бы переименовать файл в имя файла, выбранного в поле “Число”. Как мне это сделать?

<form action=»upload_file.php» method=»post» enctype=»multipart/form-data»> Filename:<input type=»file» name=»file» id=»file»><br> Number:<input type=»text» name=»number» id=»number» /> <br /> <br /> <input type=»submit» name=»submit» value=»Submit»> </form>

Например… Пользователь выбирает файл test.pdf и вставляет ‘file_name’ в поле Number. Я хочу, чтобы он отправил ‘file_name.pdf’ в фактический сценарий ‘upload_file.php’.

Любое руководство поможет, спасибо

Ответ №1

$_FILES массив $_FILES содержит всю необходимую информацию о загрузке вашего файла, поэтому, когда вы загружаете файл, $_POST[‘number’]. ‘.pdf’ $_POST[‘number’]. ‘.pdf’ вместо атрибута name:

$upload_path = ‘/your/upload/location/’ . $_POST[‘number’] . ‘.pdf’; if(move_uploaded_file($_FILES[‘file’][‘tmp_name’], $upload_path)) { // success }

Вероятно, вы захотите выполнить некоторые тесты символов в поле, чтобы убедиться, что кто-то не вводит [email protected]#$%^&*( т.д.) Я бы использовал str_replace чтобы избавиться от них и оставить только буквы, цифры и рушится.

Ответ №2

Вы можете сделать это

if(move_uploaded_files($tmp_name,$location.’number,pdf’)) { echo «uploaded!!»; } Ответ №3

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

$tmpFile = $_FILES[«file»][«tmp_name»];

Отсюда вы можете использовать функцию move_uploaded_file, чтобы сохранить ее там, где хотите, и с конечным именем файла, который вы хотите. Так что в вашем случае это будет выглядеть примерно так.

move_uploaded_file($tmpFile, ‘/path/to/uploads/directory/’ . $_POST[‘number’] . ‘.pdf’);

Вы, конечно же, захотите сделать свою проверку, прежде чем делать это.

Ответ №4

Я не думаю, что вы можете использовать javascript или клиентский код для переименования непосредственно перед загрузкой. Загрузка поведения элемента пользовательского интерфейса полностью контролируется браузером, если вы не создадите собственный пользовательский элемент управления загрузкой.

Однако вы можете достичь той же цели, что и переименование загруженного файла на стороне сервера.

$destDir = ‘/var/www/’; //can be any directory on your server, writeable by webserver $renamedFilename = $_POST[‘number’]; //keep the same file extension if uploaded file has it $renamedFilename .= ($pos = strrpos($_FILES[‘file’][‘name’], ‘.’)) === false ? » : substr($_FILES[‘file’][‘name’], $pos); move_uploaded_file($_FILES[«file»][«tmp_name»], $destDir . DIRECTORY_SEPARATOR . $renamedFilename); Ответ №5

Измените имя файла перед отправкой почтового запроса:

var file = $(‘#image-file’).get(0).files[0]; var newFileName = file.filename + «newName»; var formData = new FormData(); formData.append(‘file’, file, newFileName); $.ajax({ url: upload.php, // get the upload URL for the server success: function(fileData) { … }, error: function(e) { … }, // Form data data: formData, type: ‘POST’, cache: false, contentType: false, processData: false }); return false; });

Код PHP Чтобы сохранить файл:

<?php $targetfile = $_FILES[‘file’][‘name’]; move_uploaded_file($_FILES[‘file’][‘tmp_name’], $targetfile); ?>

Примечание: длина сообщения по умолчанию для 8M в PHP может быть изменена в php.ini

Оцените статью
Добавить комментарий