Files
sam-kd/bending/save_edited_image.php
hskwon aca1767eb9 초기 커밋: 5130 레거시 시스템
- URL 하드코딩 → .env APP_URL 기반 동적 URL로 변경
- DB 연결 하드코딩 → .env 기반으로 변경
- MySQL strict mode DATE 오류 수정
2025-12-10 20:14:31 +09:00

85 lines
2.9 KiB
PHP

<?php
require_once($_SERVER['DOCUMENT_ROOT'] . "/session.php");
// 파일 업로드 처리 (bottombar/list.php 방식 적용)
$num = isset($_POST['num']) ? $_POST['num'] : '';
$mode = isset($_POST['mode']) ? $_POST['mode'] : '';
// 업로드된 파일 확인
if (!isset($_FILES['upfile']) || $_FILES['upfile']['error'] !== UPLOAD_ERR_OK) {
echo json_encode(['success' => 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()
]);
}
?>