inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

MERN STACK 커뮤니티 : 시작부터 배포까지 알려주는 React

ImageUpload_Server (2) : 이미지 서버에 업로드하기

이미지 통신 오류...

해결된 질문

257

작성자 없음

1

안녕하세요. 서버와 이미지를 주고 받는 과정에서 에러가 발생했는데 어떤 부분이 문제일까요... 급하게 마무리 하려다 보니 자꾸 잘 안되네요ㅠㅠ

 

클라이언트의 ImageUpload.js 코드

import axios from 'axios'
import React from 'react'

function ImageUpload() {
    const FileUpload = (e)=>{
        var formData = new FormData() //서버로 보내기 위한 파일내용 인코딩
        formData.append("file", e.target.files[0]) //file이름으로 첨부된 파일 데이터를 추가
        axios.post('/api/post/image/upload', formData)
        .then(()=>{
            console.log("성공")
        }).catch((err)=>{
            console.log(err)
        })

    }

  return (
    <div>
        <input onChange={(e)=>FileUpload(e)} type="file" accept='image/*'/>
    </div>
  )
}

export default ImageUpload

 

클라이언트 창 콘솔 에러...

서버의 post.js 코드

const express = require('express')
const router = express.Router()
const multer = require('multer')

const { Post } = require('../models/post.js')
const { Counter } = require('../models/counter.js')

router.post('/submit', (req, res) => {
    let temp = req.body
    Counter.findOne({ name: 'counter' }).exec().then(counter => {
        temp.postNum = counter.postNum
        const CommunityPost = new Post(temp)
        CommunityPost.save().then(() => {
            Counter.updateOne({ name: "counter" }, { $inc: { postNum: 1 } })
                .then(() => {
                    res.status(200).json({ success: true })
                })
        })
    }).catch(err => {
        err.status(400).json({ success: false })
    })
})

router.post('/list', (req, res) => {
    Post.find().exec().then(doc => {
        res.status(200).json({ success: true, postList: doc })
    }).catch(err => {
        status(400).json({ success: false })
    })
})

router.post('/detail', (req, res) => {
    Post.findOne({ postNum: Number(req.body.postNum) }).exec()
        .then(doc => {
            res.status(200).json({ success: true, postList: doc })
        }).catch(err => {
            console.log(err)
            status(400).json({ success: false })
        })
})

router.post('/edit', (req, res) => {
    console.log(req.body)
    let temp = {
        title: req.body.title,
        content: req.body.content,
    }
    console.log(temp)
    Post.updateOne({ postNum: Number(req.body.postNum) }, { $set: temp }).exec()
        .then(() => {
            console.log("수정성공")
            res.status(200).json({ success: true })
        }).catch(err => {
            console.log("수정실패")
            err.status(400).json({ success: false })
        })
})

router.post('/delete', (req, res) => {
    Post.deleteOne({ postNum: Number(req.body.postNum) }).exec()
        .then(doc => {
            res.status(200).json({ success: true })
        }).catch(err => {
            console.log(err)
            status(400).json({ success: false })
        })
})

const storage = multer.diskStorage({ //multer를 통해 전달받은 데이터를 파일 디스크에 저장
    destination: (req, file, cb) => {  //저장할 경로를 지정
        cb(null, 'image/')
    },
    filename: (req, file, cb) => { //저장할 파일의 이름 지정
        cb(null, file.originalname + '-' + Date.now())
    }
})

const upload = multer({ storage }).single('file')

router.post('/image/upload', (req, res) => {
    upload((req, res, err) => {
        if (err) res.status(400).json({ success: false })
        else console.log("성공!")
    })
})

module.exports = router

이전 기능까지는 잘 구현되었는데 이미지 통신 자체가 잘 안되는 것 같습니다...

express firebase nodejs mongodb react

답변 2

1

jjjj

삭제된 글입니다

0

판다코딩

답변이 늦어서 죄송합니다! 저희 소스코드는 압축파일로 제공하고 있습니다.

0

판다코딩

서버쪽에서 발생하는 에러인데, 서버 console에는 뭐라고 찍히나요?
(코드는 제가 밤에 확인해보겠습니다)

0

jjjj

서버 쪽에서는 

 

TypeError: Cannot read properties of undefined (reading 'transfer-encoding')

    at hasbody (C:\Users\wis06\Desktop\community-app\server\node_modules\type-is\index.js:93:21)

    at typeofrequest (C:\Users\wis06\Desktop\community-app\server\node_modules\type-is\index.js:127:8)

    at multerMiddleware (C:\Users\wis06\Desktop\community-app\server\node_modules\multer\lib\make-middleware.js:18:10)

    at C:\Users\wis06\Desktop\community-app\server\Router\post.js:81:5

    at Layer.handle [as handle_request] (C:\Users\wis06\Desktop\community-app\server\node_modules\express\lib\router\layer.js:95:5)

    at next (C:\Users\wis06\Desktop\community-app\server\node_modules\express\lib\router\route.js:144:13)

    at Route.dispatch (C:\Users\wis06\Desktop\community-app\server\node_modules\express\lib\router\route.js:114:3)

    at Layer.handle [as handle_request] (C:\Users\wis06\Desktop\community-app\server\node_modules\express\lib\router\layer.js:95:5)

    at C:\Users\wis06\Desktop\community-app\server\node_modules\express\lib\router\index.js:284:15

    at Function.process_params (C:\Users\wis06\Desktop\community-app\server\node_modules\express\lib\router\index.js:346:12)

라고 뜹니다!

Heroku 데이터로드 문제.

0

194

2

몽고DB

0

180

1

No routes matched location Error Component Stack error 질문입니다.

0

603

1

axios 문제 404에러

0

2130

1

도와주세요

0

468

3

네이버 클라우드를 사용하지 않는 사람은 외부저장소~env 까지 따라하지 않아도 되죠?

0

240

0

두번씩 실행되는 문제..

0

470

1

스타일 깃허브에서 코드 가져가라고 하셨는데요

0

479

2

read(2) 강의 내용에 질문이 있습니다.

0

269

1

깃허브

0

354

1

마지막에 "" 로 채워주는 이유가 있을까요?

0

294

1

React-router-dom을 설치하고 react app이 크롬에서 실행되지 않습니다.

0

387

1

Detail.js CSS 관련 강의가 없어진거 같은데요 ?

0

284

1

504 에러

0

864

1

콘솔에 DOM이라는 로그가 뜨는데

0

295

1

useEffect 두번 사용하는 것

0

931

1

작동은 잘되는데 오류가 뜹니다

0

446

1

react-router-dom 현재 최신버전

0

617

1

Test.js 소스코드 볼 수 있을까요?

0

495

2

닉네임 중복검사 시 404 에러

0

517

1

수정 버튼 눌렀을 때 이전 이미지 경로

0

442

1

이미지 수정이 안되고 이전 이미지 경로가 안떠요 ㅜㅜ

0

573

1

upload에서 제출 시 오류

0

628

2

여기 학습에 필요한 css 이거 어디에 있나요?

1

632

1