我有一个问题,当我想上传图片并创建一个不存在的新目录时它不会创建文件夹$ gallery_name,它将图片存储在uploads / galerije / $ username而不是uploads / galerije / $ username / $ gallery_name 。 任何人都可以帮助我吗?
$username = $_SESSION['username'];
$gallery_name = $_POST['gallery_name'];
if (isset($_FILES['files'])) {
$errors = array();
foreach ( $_FILES['files']['tmp_name'] as $key => $tmp_name ) {
$file_name = $key . $_FILES['files']['name'][$key];
$file_size = $_FILES['files']['size'][$key];
$file_tmp = $_FILES['files']['tmp_name'][$key];
$file_type = $_FILES['files']['type'][$key];
if ($file_size > 2097152) {
$errors[] = 'File size must be less than 2 MB';
}
$desired_dir = "uploads/galerije/" . $username . "/" . $gallery_name;
if (empty($errors)) {
if (!is_dir($desired_dir)) {
mkdir($desired_dir, 0777); // Create directory if it does not exist
}
if (!is_dir("$desired_dir/" . $file_name) == false) {
move_uploaded_file($file_tmp, "$desired_dir/" . $file_name);
header("location: index.php");
}
}
else {
print_r($errors);
}
}
if (empty($error)) {
echo "Success";
}
}
答案 0 :(得分:5)
如果它们尚未存在,你需要告诉mkdir()以递归方式创建目录。
尝试将true
传递给您的mkdir()函数:
mkdir($desired_dir, 0777, true);
php documents具体说明默认情况下mkdir()不处理递归目录,从5.0.0开始你可以传入参数来改变它
答案 1 :(得分:2)
答案 2 :(得分:2)
bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )
所以,以递归方式创建目录你可能会这样做:
mkdir("$desired_dir", 0777, true);