Php 将多个文件上载到服务器&;将路径复制到数据库

Php 将多个文件上载到服务器&;将路径复制到数据库,php,mysqli,Php,Mysqli,我正在尝试将一个新用户的多张照片上载到服务器上的一个新目录,并根据该用户在数据库中的姓名和ID为其分配一个目录名。新目录的路径将添加到数据库中的字段中,以便以后可以引用这些照片。除此之外,所有其他数据库功能都正常工作 我已经有6个月没有做这个项目了,这个功能在某个阶段还可以使用。我不确定我把什么搞砸了。目前我已成功上载“0个文件”,未创建新目录或引用。DB连接必须是良好的,因为在此代码之前未包含的其他信息添加时没有问题 请帮忙。我在扯我剩下的一点点头发 $count = 0; $valid_fo

我正在尝试将一个新用户的多张照片上载到服务器上的一个新目录,并根据该用户在数据库中的姓名和ID为其分配一个目录名。新目录的路径将添加到数据库中的字段中,以便以后可以引用这些照片。除此之外,所有其他数据库功能都正常工作

我已经有6个月没有做这个项目了,这个功能在某个阶段还可以使用。我不确定我把什么搞砸了。目前我已成功上载“0个文件”,未创建新目录或引用。DB连接必须是良好的,因为在此代码之前未包含的其他信息添加时没有问题

请帮忙。我在扯我剩下的一点点头发

$count = 0;
$valid_formats = array("jpg", "png");
$max_file_size = 1024*5000;
$lastID = $mysqli->insert_id;
$path = '../img/gallery/'.$lastID.'_'.$displayName.'/';
$path2 = './img/gallery/'.$lastID.'_'.$displayName.'/';

if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){
    // Loop $_FILES to execute all files
    foreach ($_FILES['photoUploader']['name'] as $f => $name) {     
        if ($_FILES['photoUploader']['error'][$f] == 4) {
            continue; // Skip file if any error found
        }          
        if ($_FILES['photoUploader']['error'][$f] == 0) {              
            if ($_FILES['photoUploader']['size'][$f] > $max_file_size) {
                $message[] = "$name is too large!.";
                continue; // Skip large files
            }
            elseif( ! in_array(pathinfo($displayName, PATHINFO_EXTENSION), $valid_formats) ){
                $message[] = "$name is not a valid format";
                continue; // Skip invalid file formats
            }
            else { // No error found! 
                // Create new directory based on unique ID and display name
                if (!is_dir($path)) {
                    mkdir($path, 0777, true);       
                }
                // move temporary files to permanent location
                if(move_uploaded_file($_FILES["photoUploader"]["tmp_name"][$f], $path.$name))
                $count++; // Number of successfully uploaded file
                // add image folder url to db for future use
                $imageUrlQuery = "UPDATE models SET photoLocation=? WHERE id=$lastID";
                $imageUrlstmt = $mysqli->prepare($imageUrlQuery);
                $imageUrlstmt->bind_param('s', $path2);
                $imageUrlstmt->execute();         
            }
        }
    }
    echo $count . " file(s) uploaded successfully!";
将表单设置为:

  multipart/form-data
群集上载项目:照片[]

 <input type="file" name="photos[]" multiple="multiple" id="multipic"/>
 <label for="multipic"><btn> Select 3 Photos </btn></label>

您可以对每个项目执行此操作:[0][1][2],等等。

这看起来很愚蠢。这是一个简单的疏忽

elseif( ! in_array(pathinfo($displayName, PATHINFO_EXTENSION), $valid_formats) ){
                $message[] = "$name is not a valid format";
                continue; // Skip invalid file formats

$displayName需要更改为$name。就这样。唉……

大部分都在那里处理。主要问题实际上是对文件夹的引用。我所有的问题都源于一个错误声明的变量。但你很好地总结了这个过程。谢谢
elseif( ! in_array(pathinfo($displayName, PATHINFO_EXTENSION), $valid_formats) ){
                $message[] = "$name is not a valid format";
                continue; // Skip invalid file formats