Php 警告:mkdir():文件存在
文件传输到我的上传文件夹工作正常,但我在mkdir中有一个警告。它说文件存在,但图片和文件夹生成自己的名称。我不知道是什么警告在起作用 有人能帮我吗Php 警告:mkdir():文件存在,php,Php,文件传输到我的上传文件夹工作正常,但我在mkdir中有一个警告。它说文件存在,但图片和文件夹生成自己的名称。我不知道是什么警告在起作用 有人能帮我吗 include('connect.php'); $dir=substr(uniqid(),-7); // Uniqid for subdirectory $path = "uploads/$dir/"; // uploads/subdirectory/ // Make directory $valid_formats = array("jp
include('connect.php');
$dir=substr(uniqid(),-7); // Uniqid for subdirectory
$path = "uploads/$dir/"; // uploads/subdirectory/ // Make directory
$valid_formats = array("jpg", "png", "jpeg", "kml");
$max_file_size = 2097152;
$count = 0;
// Loop $_FILES to execute all files
if(!empty($_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
mkdir($path, 0700);
$ext = pathinfo($_FILES['files']['name'][$f], PATHINFO_EXTENSION);
$uniq_name = substr(uniqid(),-5) . '.' .$ext;
$dest = $path . $uniq_name;
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 />' ;
}
}
}
}
}}
include('connect.php');
$dir=substr(uniqid(),-7);//子目录的Uniqid
$path=“uploads/$dir/”;//上载/子目录///生成目录
$valid_formats=数组(“jpg”、“png”、“jpeg”、“kml”);
$max_file_size=2097152;
$count=0;
//循环$\u文件以执行所有文件
如果(!空($\u文件)){
foreach($_FILES['FILES']['name']作为$f=>$name){
如果($_FILES['FILES']['error'][$f]==4){
继续;//如果发现任何错误,则跳过文件
}
如果($_FILES['FILES']['error'][$f]==0){
如果($\u文件['FILES']['size'][$f]>$max\u文件大小){
$message[]=“$name太大!”;
继续;//跳过大文件
}
elseif(!in_数组(pathinfo($name,pathinfo_扩展名),$valid_格式)){
$message[]=“$name不是有效的格式”;
继续;//跳过无效的文件格式
}
else{//未找到错误!移动上载的文件
mkdir($path,0700);
$ext=pathinfo($\u FILES['FILES']['name'][$f],pathinfo\u扩展名);
$uniq_name=substr(uniqid(),-5)。'.$ext;
$dest=$path.$uniq\u name;
如果(移动上传的文件($文件[“文件”][“tmp文件名”][$f],$dest)){
$qry=“在文件(代码、名称、路径、类型)中插入值('$dir'、'$uniq_名称'、'$dest'、'$ext')”;
$result=mysqli_查询($dbc,$qry);
if(false==$result){
$sql_error.='error in the query'$qry.'error Desc:'.mysqli_error($dbc)。'
;
}
}
}
}
}}
警告非常清楚,您正在创建已存在的目录。所以,把它改成
if (!file_exists($path)) {
mkdir($path, 0700);
}
使用PHP的is_dir($path_to_dir)
检查以前是否存在目录
我使用了if(!file_exists($path)){mkdir($path,0700);}但是它只上传了一张图片,即使我上传了多张。先生,我该怎么办?对不起我的语法。这不是我的第一语言。必须将文件夹的路径与文件名分开@user3199128这在unix系统上是有问题的,因为所有内容都是文件,甚至是目录。如果存在同名文件,则无法添加所述目录。因此,仅仅检查“文件”是否是目录是不够的。相反,您应该检查
如果(!file_存在($path))
@JacobThomason如果您有评论,您将如何创建与相邻文件同名的目录?在手动检查任何预先存在的目录(但不是文件)后,是否有办法强制执行mkdir()?