當我想要上傳圖片並創建不存在的新目錄時,出現問題它不會生成文件夾$ gallery_name,它將圖片存儲在uploads/galerije/$ username而不是uploads/galerije/$中用戶名/ $ GALLERY_NAME。 任何人都可以幫助我嗎?在php中製作目錄
$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";
}
}
你得到什麼錯誤?確保你的PHP用戶有權創建目錄/文件。 – Jasper
你應該讓mkdir像給出的答案一樣遞歸地創建目錄,但我不認爲這解釋了爲什麼他們被移動到錯誤的目錄。做'$ _POST ['gallery_name'];'是否存在?你可以用var_dump($ _ POST ['gallery_name']);' – immulatin
小心!您在文件操作中使用用戶輸入而不進行任何驗證。一個邪惡的用戶可以簡單地上傳任何文件到你的網站空間的任何目錄。例如,將$ _POST ['gallery_name']設置爲「../../../」,上傳一個名爲index.php的文件,就完成了。 – a4c8b