我找到了这段代码,用于上传多个文件
我对代码进行了一些修改,以获取上传/子目录文件夹,并为每个上传集提供唯一的 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/