fix: 이미지 파일에 대한 잘못된 입력 처리 추가
This commit is contained in:
parent
603b8d8014
commit
071fa6620a
@ -5,7 +5,7 @@ import EditIcon from '/src/assets/icons/edit.svg?react';
|
|||||||
import BackIcon from '/src/assets/icons/back.svg?react';
|
import BackIcon from '/src/assets/icons/back.svg?react';
|
||||||
|
|
||||||
export default function LectureForm({ title, topic, to = '..', initialValues = {}, onSubmit, onCreate = false }) {
|
export default function LectureForm({ title, topic, to = '..', initialValues = {}, onSubmit, onCreate = false }) {
|
||||||
// TODO: 디자인 필요, 필요시 useState로 수정하고 버튼 비활성화 기능 추가
|
// TODO: 디자인 필요, 필요시 useState로 수정하고 버튼 비활성화 기능 추가 및 이미지 파일 입력 처리
|
||||||
const titleRef = useRef('');
|
const titleRef = useRef('');
|
||||||
const descriptionRef = useRef('');
|
const descriptionRef = useRef('');
|
||||||
const planRef = useRef('');
|
const planRef = useRef('');
|
||||||
@ -24,6 +24,11 @@ export default function LectureForm({ title, topic, to = '..', initialValues = {
|
|||||||
if (initialValues.time) timeRef.current.value = initialValues.time;
|
if (initialValues.time) timeRef.current.value = initialValues.time;
|
||||||
}, [initialValues]);
|
}, [initialValues]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
console.log(imageFileRef.current.value);
|
||||||
|
console.log(imageFileRef.current && imageFileRef.current.files[0]);
|
||||||
|
}, [imageFileRef]);
|
||||||
|
|
||||||
const handleSubmit = async (e) => {
|
const handleSubmit = async (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
@ -41,7 +46,12 @@ export default function LectureForm({ title, topic, to = '..', initialValues = {
|
|||||||
|
|
||||||
const imageFile = (imageFileRef.current && imageFileRef.current.files[0]) ?? null;
|
const imageFile = (imageFileRef.current && imageFileRef.current.files[0]) ?? null;
|
||||||
if (imageFile) {
|
if (imageFile) {
|
||||||
formData.append('image', imageFile);
|
const fileType = imageFile.type;
|
||||||
|
if (fileType === 'image/jpeg' || fileType === 'image/png') {
|
||||||
|
formData.append('image', imageFile);
|
||||||
|
} else {
|
||||||
|
window.alert(`${fileType}은 지원되는 파일 타입이 아닙니다. jpg / png / jpeg 이미지 파일을 첨부해 주세요`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onSubmit(lectureObject, imageFile);
|
onSubmit(lectureObject, imageFile);
|
||||||
@ -126,7 +136,7 @@ export default function LectureForm({ title, topic, to = '..', initialValues = {
|
|||||||
<input
|
<input
|
||||||
type="file"
|
type="file"
|
||||||
ref={imageFileRef}
|
ref={imageFileRef}
|
||||||
accept=".png, .jpg, .jpeg"
|
accept="image/*"
|
||||||
className={styles.input}
|
className={styles.input}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -37,6 +37,11 @@ export default function QuizCard({ quiz, updateQuiz, deleteQuiz }) {
|
|||||||
|
|
||||||
const handleFileChange = (e) => {
|
const handleFileChange = (e) => {
|
||||||
const file = e.target.files[0] ?? null;
|
const file = e.target.files[0] ?? null;
|
||||||
|
const fileType = file && file.type;
|
||||||
|
if (file && fileType !== 'image/jpeg' && fileType !== 'image/png') {
|
||||||
|
window.alert(`${fileType}은 지원되는 이미지 형식이 아닙니다. jpg / png / jpeg 이미지 파일을 넣어 주세요.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
setImage(file);
|
setImage(file);
|
||||||
updateQuiz(quiz.id, { ...quiz, question, answer, choices, image: file });
|
updateQuiz(quiz.id, { ...quiz, question, answer, choices, image: file });
|
||||||
if (file) {
|
if (file) {
|
||||||
@ -78,7 +83,7 @@ export default function QuizCard({ quiz, updateQuiz, deleteQuiz }) {
|
|||||||
<input
|
<input
|
||||||
id={`file-input-${quiz.id}`}
|
id={`file-input-${quiz.id}`}
|
||||||
type="file"
|
type="file"
|
||||||
accept=".png, .jpg, .jpeg"
|
accept="image/*"
|
||||||
onChange={handleFileChange}
|
onChange={handleFileChange}
|
||||||
className={styles.hiddenInput}
|
className={styles.hiddenInput}
|
||||||
/>
|
/>
|
||||||
|
Loading…
Reference in New Issue
Block a user