• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 POST 요청이 안되요...

POST 요청이 안되요...

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 글쓴이
  • #85059

    성현찬
    참가자
    //react 코드
    import React, { useState } from 'react';
    import ReactQuill from 'react-quill';
    import 'react-quill/dist/quill.snow.css';
    import axios from 'axios';
    export default function PostWrite() {
      const [title, setTitle] = useState('');
      const [data, setData] = useState('');
      const [day1, setDay1] = useState('');
      const [day2, setDay2] = useState('');
      const [image, setImage] = useState(null);
      function handleTitleChange(e) {
        setTitle(e.target.value);
      }
      function handleDataChange(e) {
        setData(e.target.value);
      }
      function handleDay1Change(e) {
        setDay1(e.target.value);
      }
      function handleDay2Change(e) {
        setDay2(e.target.value);
      }
      function handleImageChange(e) {
        const image = e.target.files[0];
        setImage(image);
      }
      function handleSubmit(e) {
        e.preventDefault();
        const formData = new FormData();
        formData.append('title', title);
        formData.append('day1', day1);
        formData.append('day2', day2);
        formData.append('data', data);
        formData.append('image', image);
        axios.post('/add', formData)
          .then(function (response) {
            console.log(response.data);
            // 성공적으로 요청이 처리되었을 때 실행할 코드 작성
          })
          .catch(function (error) {
            console.error(error);
            // 요청이 실패했을 때 실행할 코드 작성
          });
      }
      return (
        <div className="page2">
          <form onSubmit={handleSubmit} encType="multipart/form-data">
            <div className="titleWrap2" style={{ marginTop: '20px' }}>
              게시글 작성
            </div>
            <input
              className="titleWrap3"
              type="text"
              placeholder="제목을 입력해 주세요"
              value={title}
              onChange={handleTitleChange}
              name="title"
            />
            <div className='dateWrap2'>
              <input
                className="dateWrap"
                type="date"
                name="day1"
                value={day1}
                onChange={handleDay1Change}></input>~
              <input
                className="dateWrap"
                type="date"
                value={day2}
                onChange={handleDay2Change}
                name="day2"></input>
            </div>
            <ReactQuill
              value={data}
              onChange={handleDataChange}
              className='reactQuill'
              name="data" />
            <div className='asd'>
              <input
                className='imagefile'
                type="file"
                accept=".png, .jpg"
                onChange={handleImageChange}
                name="image" />
              <button className="buttonPostWrite" type="submit">
                제출하기
              </button>
            </div>
          </form>
        </div>
      );
    }
    
    
    
    //express 코드
    const express = require('express');
    const app = express();
    const bodyParser = require('body-parser');
    const Db = require('mongodb/lib/db');
    const MongoClient = require('mongoDB').MongoClient;
    const methodoverride = require('method-override');
    app.use(methodoverride('_method'));
    var db;
    MongoClient.connect('mongodb+srv://qor:0989@ais.smqldtl.mongodb.net/?retryWrites=true&w=majority', function(err, client){
      if (err) return console.log(err);
      db = client.db('test');
      app.listen('3000', function(){
        console.log('listening on 3000')
      });
    });
    let multer = require('multer');
    var storage = multer.diskStorage({
      destination: function(req, file, cb){
        cb(null, 'imege')
      },
      filename: function(req, file, cb){
        cb(null, file.originalname)
      }
    });
    app.use(bodyParser.urlencoded({extended: true}));
    var path = require('path');
    var upload = multer({
      storage: storage,
      fileFilter: function (req, file, callback) {
        var ext = path.extname(file.originalname);
        if(ext !== '.png' && ext !== '.jpg' && ext !== '.jpeg') {
          return callback(new Error('PNG, JPG만 업로드하세요'));
        }
        callback(null, true);
      },
      limits: {
        fileSize: 1024 * 1024
      }
    });
    app.use(express.static(path.join(__dirname, 'front/build')));
    app.post('/add', function(req, res){
      console.log(req.body); 
      db.collection('counter').findOne({name: '계시물갯수'}, function(err, result){
        var w_count = result.totalpost;
        db.collection('qor').insertOne({_id: w_count + 1, 제목: req.body.title, 내용: req.body.data, 날짜1: req.body.day1, 날짜2: req.body.day2}, function(err, result){
          console.log('저장완료'); 
          db.collection('counter').updateOne({name: '계시물갯수'}, {$inc: {totalpost: 1}}, function(err, result){
            if(err) {
              return console.log(err);
            }
          });
        });
      });
    });
    app.post('/add', upload.single('image'), function(req, res){
      res.send('업로드완료');
    });
    app.get('/', function(req, res){
      res.sendFile(path.join(__dirname, '/front/build/index.html'));
    });
    
    제출하기를 눌렀을때 
    스크린샷 2023-05-29 194500
    이렇게 뜨며 mongoDB 에는 저장은 되나
    스크린샷 2023-05-29 194612
    이런식으로 저장이 됩니다 뭐가 문제일까요?
     
    #85062

    codingapple
    키 마스터
    axios({
      url: "/url",
      method: "POST",
      data: formData
    })
    로 post 요청해봅시다
    #85069

    성현찬
    참가자
        axios.post('/add', formData, { headers: { 'Content-Type': 'multipart/form-data' } })
          .then(function (response) {
            // 요청이 성공한 경우 처리할 로직
            console.log(response.data);
          })
          .catch(function (error) {
            // 요청이 실패한 경우 처리할 로직
            console.error(error);
          });
    
    
    
    
    이걸
    
        axios({
          url: "/add",
          method: "POST",
          data: formData
        })
      }
    
    로 바꿨는데도 똑같습니다...
    #85126

    codingapple
    키 마스터
    app.post('/add' 가 2개있는데 둘 중 하나는 지웁시다
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠