上载多个文件并在PHP中为上载的文件指定一个新名称

上载多个文件并在PHP中为上载的文件指定一个新名称,php,Php,大家好,我有这个上传脚本,可以一次上传一个文件,但我需要同时上传多个文件,然后将每个上传的文件命名为1,下一个文件命名为2,下一个文件命名为3,依此类推 <?php $allowedExts = array("gif", "jpeg", "jpg", "png","JPG"); $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); if (in_array($e

大家好,我有这个上传脚本,可以一次上传一个文件,但我需要同时上传多个文件,然后将每个上传的文件命名为1,下一个文件命名为2,下一个文件命名为3,依此类推

    <?php
    $allowedExts = array("gif", "jpeg", "jpg", "png","JPG");
    $temp = explode(".", $_FILES["file"]["name"]);
    $extension = end($temp);
    if (in_array($extension, $allowedExts))
    {
    if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
    else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1032) . " kB<br>";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";

    if (file_exists("i/" . $_FILES["file"]["name"]))
    {
    echo $_FILES["file"]["name"] . " already exists. ";
    }
    else
    {
    move_uploaded_file($_FILES["file"]["tmp_name"], "i/" . $_FILES["file"]["name"]);
    echo "Stored in: " . "i/" . $_FILES["file"]["name"];
    }
    }
    }
    else
   {
   echo "Invalid file";
   }
   ?>

您应该能够这样做:

        $files = array();

        $allowed_filetypes = array('jpg','jpeg','gif','bmp','png','tif','pdf');
        $max_filesize = 15242880;
        $upload_path = 'images/image_uploads/';

        for ($i = 0; $i < count($_FILES['files']['name']); $i++){
            if($_FILES['files']['name'][$i] != "") {
                $filename = $_FILES['files']['name'][$i];
                $file_info = pathinfo($_FILES['files']['name'][$i]);
                $ext = strtolower($file_info['extension']);
                //echo "<span style='font-size: 20px; color: #ff3333;'>".$ext."</span>";

                if(!in_array($ext,$allowed_filetypes))
                    die("The file you attempted to upload ($filename) is not allowed.");

                if(filesize($_FILES['files']['tmp_name'][$i]) > $max_filesize)
                    die("The file you attempted to upload ($filename) is too large.");

                if(!is_writable($upload_path))
                    die("You cannot upload to the specified directory, please CHMOD it to 777.");

                $filename = ($i+1).".".$ext;
                if(move_uploaded_file($_FILES['files']['tmp_name'][$i],$upload_path.$filename)) {
                    $result = mysql_query("Insert Into image_uploads_images (upload_id, image, original_name) Values ('$id', '$filename', '".$_FILES['files']['name'][$i]."');");

                    if($result){
                        array_push($files, "http://www.site.com/images/image_uploads/$filename => ".$_FILES['files']['name'][$i]);
                    }else{
                        echo "<p style=\"color:#cc3333;\">Unable to upload ".$_FILES['files']['name'][$i]."</p>";
                    }
                }else{
                    echo "<p style=\"color:#cc3333;\">Unable to upload ".$_FILES['files']['name'][$i]."</p>";
                }
            }
        }
编辑

作为一个简单的解释,所有文件输入都将具有相同的名称,在本例中为文件。但是当您这样做时,您需要在form元素中的name后面添加[],这样它就可以作为一个数组


一旦你有了$_FILES数组,你就可以对上传的每个文件进行递归检查,并根据需要使用它。

只需在html上使用几个输入:

<form action="file-upload.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>
在你的PHP中

<?php  

    for ($i=0; $i < count($_FILES['name']); $i++) { 
        $new_file = $_FILES['name'][$i] . '.' . $i+1; 
    }

?>
后者将创建附加索引+1的文件名,因此您将有:

myfile1.txt.1 myfile1.txt.2 根据需要进行调整


编辑:。

是否有以下帮助?