자바스크립트 fetch()함수를 이용하여 파일 업로드
let formElement = document.getElementById("form_ch1");
let formData = new FormData(formElement);
fetch("modal_img.php", {
method: "POST",
body: formData,
headers: {
// 'Content-Type': 'multipart/form-data' 👈 FormData 사용 시 명시하지 않음! (자동 생성됨)
"Accept": "application/json" // 서버가 JSON 응답을 반환하도록 요청
}
})
.then(response => response.json())
.then(data => console.log("서버 응답:", data))
.catch(error => console.error("에러 발생:", error));
fetch 요청에 headers를 추가하면, 서버가 요청을 올바르게 인식할 수 있도록 설정할 수 있습니다.
하지만 FormData 객체를 사용할 때 Content-Type을 명시적으로 설정하면 boundary 값이 자동으로 추가되지 않아 업로드가 실패할 수 있습니다.
따라서 Content-Type을 직접 지정하지 않고 서버가 자동으로 처리하도록 두는 것이 좋습니다.
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$title = $_POST['title'] ?? '';
$body = $_POST['body'] ?? '';
$userId = $_POST['userId'] ?? '';
// 파일 업로드 확인
if (!empty($_FILES['imgfile1']['name'])) {
$uploadDir = "uploads/";
$uploadFile = $uploadDir . basename($_FILES['imgfile1']['name']);
if (move_uploaded_file($_FILES['imgfile1']['tmp_name'], $uploadFile)) {
echo "파일 업로드 성공: " . $uploadFile;
} else {
echo "파일 업로드 실패.";
}
}
echo "제목: " . htmlspecialchars($title) . "<br>";
echo "내용: " . htmlspecialchars($body) . "<br>";
echo "사용자 ID: " . htmlspecialchars($userId) . "<br>";
}
'무료홈페이지소스 > 자바스크립트 제이쿼리 소스' 카테고리의 다른 글
자바스크립트 fetch()함수_ json (0) | 2025.05.09 |
---|---|
좌측에서 우측으로 나오는 슬라이드 메뉴 javascript (1) | 2025.04.15 |
좌에서 우로 나오는 슬라이드 메뉴 입니다. jquery (0) | 2025.04.15 |
타이머 5초뒤에 함수 실행 (0) | 2025.04.10 |
다중 Select 제어 (1) | 2025.04.10 |