Как переименовать и сохранить файлы в Stack Overflow

Это моя HTML-форма

<form action="index.php" method="post" enctype="multipart/form-data">
Send these files:<br />
<input name="userfile[]" type="file" /><br />
<input name="userfile[]" type="file" /><br />
<input type="submit" value="Send files" />
</form>

Это мое index.php файл

<?php
foreach ($_FILES["userfile"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
echo"$error_codes[$error]";
move_uploaded_file(
$_FILES["userfile"]["tmp_name"][$key],
$_FILES["userfile"]["name"][$key]
) or die("Problems with upload");
}
}
?>

** Код работает правильно. Но, что мне действительно нужно, это изменить имя 1-го загруженного файла на birthcertificate и имя 2-го загруженного файла в NIC, **

** Пример: если я загружу файл с именем 123 или же abc (независимо от имени) имя 1-го файла должно быть birthcertificate и имя второго файла должно быть NIC, **

-2

Решение

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

<?php
// Make a list of the new file names
$newFileNames = ['birthcertificate', 'NIC'];
foreach ($_FILES["userfile"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
echo"$error_codes[$error]";
// Grab new file name
$newFileName = array_shift($newFileNames);
// Make sure we actually got one
if ( $newFileName )  {
move_uploaded_file(
$_FILES["userfile"]["tmp_name"][$key],
$newFileName)
or die("Problems with upload");
}
}
}
0

Другие решения

move_uploaded_file(file, location);

Вы можете использовать файл и новое имя в параметре location следующим образом:

$newname = "yourimg.png";
enter code here
move_uploaded_file($_FILES["userfile"]["tmp_name"][$key], "your location" . $newname);

Это основной способ переименования, внесите изменения в цикл для переименования обоих файлов. Если вы загружаете только 2 файла одновременно, вы можете использовать индекс массива для своей логики.

0

Вы можете переименовать файл:
Вместо приведенного ниже кода внутри foreach вы поделились

move_uploaded_file(
$_FILES["userfile"]["tmp_name"][$key],
$_FILES["userfile"]["name"][$key]
) or die("Problems with upload");

Ты можешь использовать:

$temp = explode(".", $_FILES["userfile"]["name"]);
$newfilename = 'birthcertificate' . '.' . end($temp);
move_uploaded_file($_FILES["userfile"]["tmp_name"], $newfilename) or die("Problems with upload");

Попробуйте дать файлу отдельные имена, в PHP вы можете получить их и собрать в один массив, если вам нужно

Вы также можете обратиться к этой ссылке:

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

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector