Php 创建目录并将多个文件上载到创建的目录中

Php 创建目录并将多个文件上载到创建的目录中,php,file-upload,server,multiple-file-upload,move-uploaded-file,Php,File Upload,Server,Multiple File Upload,Move Uploaded File,我已经挖掘了好几天的答案。如何将多个文件上载到新创建的目录。如果您查看文件\u upload.php,您将发现两个$upload\u dir变量。因此,让我们首先调用$upload\u dir作为直接文件夹,然后调用$upload\u dir作为make dir。简单的 因此,当我选择第一个$upload\u dir时,它会将所有文件直接上载到文件夹中;当我选择第二个$upload\u dir时,它会创建一个随机文件夹,但无法上载任何文件 我想上传多个文件到新创建的文件夹 我确实提到了这一点,但

我已经挖掘了好几天的答案。如何将多个文件上载到新创建的目录。如果您查看文件\u upload.php,您将发现两个
$upload\u dir
变量。因此,让我们首先调用
$upload\u dir
作为直接文件夹,然后调用
$upload\u dir
作为make dir。简单的

因此,当我选择第一个
$upload\u dir
时,它会将所有文件直接上载到文件夹中;当我选择第二个
$upload\u dir
时,它会创建一个随机文件夹,但无法上载任何文件

我想上传多个文件到新创建的文件夹

我确实提到了这一点,但没有为我工作

index.php

<form action="file_upload.php" method="POST"
            enctype="multipart/form-data"> 
  
        <h2>Upload Files</h2> 
          
        <p> 
            Select files to upload:  
              
            <!-- name of the input fields are going to 
                be used in our php script-->
            <input type="file" name="files[]" multiple> 
              
            <br><br> 
              
            <input type="submit" name="submit" value="Upload" > 
        </p> 
    </form>  
<?php  
  
// session_start();
// Check if form was submited 
if(isset($_POST['submit'])) { 
  
    // Configure upload directory and allowed file types 
    $rand_name = rand(1, 10000);
    // $upload_dir = 'C:/fileUpload/'.DIRECTORY_SEPARATOR;
    // $permit = 0777;
    $allowed_types = array('jpg', 'png', 'jpeg', 'gif'); 
    $upload_dir = mkdir('C:/fileUpload/'. $rand_name .'/'.DIRECTORY_SEPARATOR, 0777);
      
    // Define maxsize for files i.e 10MB 
    $maxsize = 10 * 1024 * 1024;  
  
    // Checks if user sent an empty form  
    if(!empty(array_filter($_FILES['files']['name']))) { 
  
        // Loop through each file in files[] array 
        foreach ($_FILES['files']['tmp_name'] as $key => $value) { 
              
            $file_tmpname = $_FILES['files']['tmp_name'][$key]; 
            $file_name = $_FILES['files']['name'][$key]; 
            $file_size = $_FILES['files']['size'][$key]; 
            $file_ext = pathinfo($file_name, PATHINFO_EXTENSION); 
  
            // Set upload file path 
            $filepath = $upload_dir.$file_name;
  
            // Check file type is allowed or not 
            if(in_array(strtolower($file_ext), $allowed_types)) { 
  
                // Verify file size - 10MB max  
                if ($file_size > $maxsize)          
                    echo "Error: File size is larger than the allowed limit.";  
  
                // If file with name already exist then append time in 
                // front of name of the file to avoid overwriting of file 
                if(file_exists($filepath)) { 
                    $filepath = $upload_dir.time().$file_name; 
                      
                    if( move_uploaded_file($file_tmpname, $filepath)) { 
                        echo "{$file_name} successfully uploaded <br />"; 
                    }  
                    else {                      
                        echo "Error uploading {$file_name} <br />";  
                    } 
                } 
                else { 
                  
                    if( move_uploaded_file($file_tmpname, $filepath)) { 
                        echo "{$file_name} successfully uploaded <br />"; 
                    } 
                    else {                      
                        echo "Error uploading {$file_name} <br />";  
                    } 
                } 
            } 
            else { 
                  
                // If file extention not valid 
                echo "Error uploading {$file_name} ";  
                echo "({$file_ext} file type is not allowed)<br / >"; 
            }  
        } 
    }  
    else { 
          
        // If no files selected 
        echo "No files selected."; 
    } 
}  
  
?> 

上传文件

选择要上载的文件:


文件\u upload.php

<form action="file_upload.php" method="POST"
            enctype="multipart/form-data"> 
  
        <h2>Upload Files</h2> 
          
        <p> 
            Select files to upload:  
              
            <!-- name of the input fields are going to 
                be used in our php script-->
            <input type="file" name="files[]" multiple> 
              
            <br><br> 
              
            <input type="submit" name="submit" value="Upload" > 
        </p> 
    </form>  
<?php  
  
// session_start();
// Check if form was submited 
if(isset($_POST['submit'])) { 
  
    // Configure upload directory and allowed file types 
    $rand_name = rand(1, 10000);
    // $upload_dir = 'C:/fileUpload/'.DIRECTORY_SEPARATOR;
    // $permit = 0777;
    $allowed_types = array('jpg', 'png', 'jpeg', 'gif'); 
    $upload_dir = mkdir('C:/fileUpload/'. $rand_name .'/'.DIRECTORY_SEPARATOR, 0777);
      
    // Define maxsize for files i.e 10MB 
    $maxsize = 10 * 1024 * 1024;  
  
    // Checks if user sent an empty form  
    if(!empty(array_filter($_FILES['files']['name']))) { 
  
        // Loop through each file in files[] array 
        foreach ($_FILES['files']['tmp_name'] as $key => $value) { 
              
            $file_tmpname = $_FILES['files']['tmp_name'][$key]; 
            $file_name = $_FILES['files']['name'][$key]; 
            $file_size = $_FILES['files']['size'][$key]; 
            $file_ext = pathinfo($file_name, PATHINFO_EXTENSION); 
  
            // Set upload file path 
            $filepath = $upload_dir.$file_name;
  
            // Check file type is allowed or not 
            if(in_array(strtolower($file_ext), $allowed_types)) { 
  
                // Verify file size - 10MB max  
                if ($file_size > $maxsize)          
                    echo "Error: File size is larger than the allowed limit.";  
  
                // If file with name already exist then append time in 
                // front of name of the file to avoid overwriting of file 
                if(file_exists($filepath)) { 
                    $filepath = $upload_dir.time().$file_name; 
                      
                    if( move_uploaded_file($file_tmpname, $filepath)) { 
                        echo "{$file_name} successfully uploaded <br />"; 
                    }  
                    else {                      
                        echo "Error uploading {$file_name} <br />";  
                    } 
                } 
                else { 
                  
                    if( move_uploaded_file($file_tmpname, $filepath)) { 
                        echo "{$file_name} successfully uploaded <br />"; 
                    } 
                    else {                      
                        echo "Error uploading {$file_name} <br />";  
                    } 
                } 
            } 
            else { 
                  
                // If file extention not valid 
                echo "Error uploading {$file_name} ";  
                echo "({$file_ext} file type is not allowed)<br / >"; 
            }  
        } 
    }  
    else { 
          
        // If no files selected 
        echo "No files selected."; 
    } 
}  
  
?> 

请帮忙


提前感谢

mkdir
返回布尔值(true或false),而不是创建的目录路径

您可能希望在
$upload\u dir
中定义路径,但不将mkdir的结果分配给它:

$upload_dir = 'C:/fileUpload/'. $rand_name .'/';

if (mkdir($upload_dir, 0777)) {
   //process images
}

mkdir
返回一个
布尔值
,因此分配
$upload\u dir=mkdir(…)
可能不是您希望转储$\u FILES数组以查看其结构。。。然后根据真实结构修复代码。。。老实说,我想知道,如果人们不知道自己的数据是什么样子,他们会如何编程……仅供参考,
mkdir
的第三个参数值得使用,因为它可以确保生成路径中的所有文件夹useful@LarsStegelitz我已经相应地构建了$\u文件,因此无法解决我的问题issue@ProfessorAbronsius对不起,先生。我无法理解你的答案。如果可能的话,你能给我提供更多关于这个问题的细节吗。