본문 바로가기
프로젝트/한글 게임

9. 이미지, 낱말 데이터 등록

by 갱생angel 2024. 4. 17.

프론트엔드에서 이미지와 낱말을 각각 입력, 등록해서 백엔드로 전송

 

page - Game - <ImageRegist.js>

  -accept="image/*" : 모든 확장자의 이미지 파일 허용

import React, { useState } from "react";
import axios from "axios";

function ImageRegist() {
  const [imageTitle, setImageTitle] = useState(""); //낱말 지정
  const [imageFile, setImageFile] = useState(null); //이미지 파일 지정

  const changeImageTitle = (e) => setImageTitle(e.target.value);
  const changeImageFile = (e) => setImageFile(e.target.files[0]);

  const addImage = async (e) => { //이미지 데이터 추가 함수
    e.preventDefault();

    const imageData = {
      title: imageTitle,
      image: imageFile,
    };

    if (imageTitle === "" || imageFile === null) {
      alert("이미지 파일을 등록해주세요.");
    } else {
      await axios
        .post("http://localhost:5000/image", imageData, {
          headers: { "Content-Type": "multipart/form-data" },
        })
        .then((res) => {
          alert(res.data.message);
          setImageTitle("");
          setImageFile(null);
        });
    }
  };

  return (
    <div>
      <h2>이미지 올리기</h2>
      <form onSubmit={addImage}>
        <div>
          <label>이름</label>
          <input
            type="text"
            value={imageTitle || ""}
            onChange={changeImageTitle}
          />
        </div>
        <div>
          <label>이미지</label>
          <input type="file" accept="image/*" onChange={changeImageFile} />
        </div>
        <button type="submit">등록</button>
      </form>
    </div>
  );
}

export default ImageRegist;

'프로젝트 > 한글 게임' 카테고리의 다른 글

11. 이미지 중복 방지, 횟수 제한  (0) 2024.04.20
10. 이미지 데이터 가져오기  (0) 2024.04.18
8. multer  (0) 2024.04.15
7. 이미지 텍스트 인식  (0) 2024.04.14
6. Google Vision API  (0) 2024.04.14