如何在php中重命名和保存文件

时间:2018-11-10 05:49:20

标签: php

这是我的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。 **

**示例:如果我上传的文件名为123abc(无论名称如何),则第一个文件的名称应为birthcertificate,第二个文件的名称应为{{1 }}。 **

3 个答案:

答案 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");
        }
    }
}