false, 'message' => '업로드된 파일이 없거나 오류가 발생했습니다.']); exit; } try { $uploadedFile = $_FILES['upfile']; // 파일 타입 확인 $allowedTypes = ['image/jpeg', 'image/jpg', 'image/png', 'image/gif']; if (!in_array($uploadedFile['type'], $allowedTypes)) { throw new Exception('지원하지 않는 이미지 형식입니다.'); } // 파일 크기 확인 (5MB 제한) if ($uploadedFile['size'] > 5 * 1024 * 1024) { throw new Exception('파일 크기가 너무 큽니다. (최대 5MB)'); } // 파일명 생성 (타임스탬프 + 원본 확장자) $fileExtension = pathinfo($uploadedFile['name'], PATHINFO_EXTENSION); $filename = 'edited_image_' . time() . '.' . $fileExtension; // 업로드 디렉토리 설정 $upload_dir = $_SERVER['DOCUMENT_ROOT'] . '/bending/img/'; // 업로드 디렉토리가 없으면 생성 if (!is_dir($upload_dir)) { mkdir($upload_dir, 0755, true); } $filepath = $upload_dir . $filename; // 파일 이동 if (!move_uploaded_file($uploadedFile['tmp_name'], $filepath)) { throw new Exception('파일 저장 실패'); } // 데이터베이스 업데이트 (수정 모드인 경우) if (!empty($num) && $mode !== 'insert') { require_once($_SERVER['DOCUMENT_ROOT'] . "/common.php"); require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php"); $pdo = db_connect(); // 기존 파일 삭제 (있는 경우) $sql = "SELECT imgdata FROM bending WHERE num = ?"; $stmt = $pdo->prepare($sql); $stmt->execute([$num]); $row = $stmt->fetch(PDO::FETCH_ASSOC); if ($row && !empty($row['imgdata'])) { $oldFile = $upload_dir . $row['imgdata']; if (file_exists($oldFile)) { unlink($oldFile); } } // 새 파일명으로 업데이트 $sql = "UPDATE bending SET imgdata = ? WHERE num = ?"; $stmt = $pdo->prepare($sql); $stmt->execute([$filename, $num]); } echo json_encode([ 'success' => true, 'message' => '이미지가 성공적으로 저장되었습니다.', 'filename' => $filename, 'filepath' => '/bending/img/' . $filename ]); } catch (Exception $e) { echo json_encode([ 'success' => false, 'message' => '이미지 저장 중 오류가 발생했습니다: ' . $e->getMessage() ]); } ?>