这是我的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");
}
}
?>
**代码正常运行。但是,我真正需要的是将第一个上载文件的名称更改为birthcertificate
,将第二个上载文件的名称更改为NIC
。 **
**示例:如果我上传的文件名为123
或abc
(无论名称如何),则第一个文件的名称应为birthcertificate
,第二个文件的名称应为{{1 }}。 **
答案 0 :(得分:0)
move_uploaded_file(file, location);
您可以在位置参数中使用文件和新名称,如下所示:
$newname = "yourimg.png";
enter code here
move_uploaded_file($_FILES["userfile"]["tmp_name"][$key], "your location" . $newname);
这是重命名的基本方法,对循环进行更改以重命名两个文件。如果一次仅上传2个文件,则可以使用数组索引作为逻辑。
答案 1 :(得分: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中,您可以接收它们,并在需要时将其制成一个数组
您也可以参考此链接:
How to rename uploaded file before saving it into a directory?
答案 2 :(得分:0)
可能有很多方法可以做到这一点。 我以为列出新文件名 可能是要走的路。
<?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");
}
}
}