- URL 하드코딩 → .env APP_URL 기반 동적 URL로 변경 - DB 연결 하드코딩 → .env 기반으로 변경 - MySQL strict mode DATE 오류 수정
85 lines
2.9 KiB
PHP
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()
|
|
]);
|
|
}
|
|
?>
|