false, 'error' => ['message' => '파일이 전송되지 않았습니다.']]); exit; } $ext = strtolower(pathinfo($_FILES['upload']['name'], PATHINFO_EXTENSION)); $allowed = ['jpg','jpeg','png','gif','webp']; if (!in_array($ext, $allowed)) { echo json_encode(['uploaded' => false, 'error' => ['message' => '허용되지 않는 파일 형식입니다.']]); exit; } $saveName = time().'_'.bin2hex(random_bytes(4)).'.'.$ext; $savePath = $uploadDir.$saveName; $url = '/eng/uploads/img/'.$saveName; if (move_uploaded_file($_FILES['upload']['tmp_name'], $savePath)) { echo json_encode([ "uploaded" => true, "url" => $url ]); } else { echo json_encode([ "uploaded" => false, "error" => ["message" => "파일 저장 실패"] ]); }