PHP,多个文件上传并获取每个文件上传的mysql路径

标签 php mysql file-upload upload

我找到了这段代码,用于上传多个文件

http://www.w3bees.com/2013/02/multiple-file-upload-with-php.html?showComment=1390161630156#c8075663254636569559

我对代码进行了一些修改,以获取上传/子目录文件夹,并为每个上传集提供唯一的 id;因此文件也获得了唯一的 id。

$dir=substr(uniqid(),-7); // Uniqid for subdirectory
$path = "uploads/$dir/"; // uploads/subdirectory/
mkdir($path, 0700); // Make directory
$valid_formats = array("jpg", "png", "jpeg", "kml");
$max_file_size = 2097152;
$count = 0;
    // Loop $_FILES to exeicute all files
    foreach ($_FILES['files']['name'] as $f => $name) {
        if ($_FILES['files']['error'][$f] == 4) {
            continue; // Skip file if any error found
        }          
        if ($_FILES['files']['error'][$f] == 0) {              
            if ($_FILES['files']['size'][$f] > $max_file_size) {
                $message[] = "$name is too large!.";
                continue; // Skip large files
            }
            elseif( ! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats) ){
                $message[] = "$name is not a valid format";
                continue; // Skip invalid file formats
            }
            else{ // No error found! Move uploaded files 
                $ext = pathinfo($_FILES['files']['name'][$f], PATHINFO_EXTENSION);
                $uniq_name = substr(uniqid(),-5) . '.' .$ext;
                $dest = $path . $uniq_name;
                move_uploaded_file($_FILES["files"]["tmp_name"][$f], $dest);
                mysqli_query($dbc, "INSERT INTO files (code, name, path, type) VALUES ('$dir','$uniq_name','$dest','$ext')" );
                $count++; //Number of successfully uploaded file

            }
        }

    }

}

此过程正确执行。

我想在move_upload_file之后,获取文件上传的所有路径(url)。 但我只在数据库中插入所选路径的第一个文件...其他路径文件已正确上传,但未插入数据库。

抱歉我的英语不好,这不是我的母语。我希望你可以帮助我。

最佳答案

尝试一下

$sql_error = ''; // add this before you start the loop


if(move_uploaded_file($_FILES["files"]["tmp_name"][$f], $dest)){
  $qry = "INSERT INTO files (code, name, path, type) VALUES ('$dir','$uniq_name','$dest','$ext')" ;

  $result = mysqli_query($dbc, $qry);
  if ( false===$result ) {
    $sql_error .= 'Error in the query '.$qry.'  Error Desc :'.mysqli_error($dbc).'<br /><br />' ;
  }
}

最后添加

echo $sql_error ;

在文件末尾,因此如果有任何错误,它将在查询中显示错误。

还可以在内部添加查询

if(move_uploaded_file($_FILES["files"]["tmp_name"][$f], $dest)){}

表示您仅在文件上传时添加。

关于PHP,多个文件上传并获取每个文件上传的mysql路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21222356/

相关文章:

javascript - 无法获取包含javascript代码的json中php变量的返回值

java - hibernate 生成错误的查询

javascript - Html 文件输入,从 File 对象中设置选择

asyncfileupload - 在服务器上存储文件的最佳方式是按 block 上传吗?

php - 如何在 MAMP 或 XAMPP 上安装 Ratchet WebSockets for PHP?

php - 为按钮点击填充一个单独的 div,其中按钮 ID 基于变量

python - sqlite - 使用两列的倍数的 WHERE 语句

php - 带有 MYSQL 返回的双 while 循环

javascript - 错误 : Bad content type. 请使用多部分

php - 数据表js和查询数php mysql