Это моя 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
, **
Есть, вероятно, много способов сделать это.
Я думал, что составление списка новых имен файлов
может быть, путь.
<?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");
}
}
}
move_uploaded_file(file, location);
Вы можете использовать файл и новое имя в параметре location следующим образом:
$newname = "yourimg.png";
enter code here
move_uploaded_file($_FILES["userfile"]["tmp_name"][$key], "your location" . $newname);
Это основной способ переименования, внесите изменения в цикл для переименования обоих файлов. Если вы загружаете только 2 файла одновременно, вы можете использовать индекс массива для своей логики.
Вы можете переименовать файл:
Вместо приведенного ниже кода внутри 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 вы можете получить их и собрать в один массив, если вам нужно
Вы также можете обратиться к этой ссылке:
Как переименовать загруженный файл перед сохранением его в каталог?