将多个文件上传到服务器并将路径复制到数据库


Upload Multiple Files to Server & Copy Path to DB

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

我已经有 6 个月没有从事这个项目了,这个功能在某个阶段工作。我不确定我搞砸了什么。目前我得到"0 个文件上传成功",没有创建新的目录或引用。数据库连接必须正常,因为此处未包含的代码前面的其他信息正在添加而没有问题。

请帮忙。我正在扯我所剩无几的头发!

$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>

处理文件

 foreach($_FILES['photos']['tmp_name'] as $key => $tmp_name ){
 $file_name = $_FILES['photos']['name'][$key];
 $file_tmp = $_FILES['photos']['tmp_name'][$key];
 $file_size = $_FILES['photos']['size'][$key];
 $photo1="dir/where/photos/go/";
 $photo1=$photo1 . basename($_FILES['photos']['name'][0]);
 $fz1=$_FILES['photos']['size'][0];
 if(move_uploaded_file($_FILES['photos']['tmp_name'][0], $photo1)) {
 /* do whatever you like here */ }
 $photo2 ...
 $photo3 ...
 }

您可以为每个项目执行此操作:[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。就是这样。叹息。。。。。。