인프런 커뮤니티 질문&답변

Halo님의 프로필 이미지
Halo

작성한 질문수

따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기

파일 업로드 중 path undefined 에러

해결된 질문

작성

·

951

0

파일을 업로드하고 돌아오는 response를 콘솔에 찍으려고 하는데

 아래와 같은 에러가 출력됩니다 ㅜㅜ 

success 메시지에 url을 제외하면 화면에서 응답은 받고 있는데 문제가 무엇일까요 ㅜㅜ?

[0] C:\Users\User\Desktop\boilerplate-mern-stack\server\routes\video.js:39 

url: res.req.file.path,

[0]                         ^

[0]

[0] TypeError: Cannot read property 'path' of undefined

[0]     at C:\Users\User\Desktop\boilerplate-mern-stack\server\routes\video.js:39:25

[0]     at Array.<anonymous> (C:\Users\User\Desktop\boilerplate-mern-stack\node_modules\multer\lib\make-middleware.js:53:37)

[0]     at listener (C:\Users\User\Desktop\boilerplate-mern-stack\node_modules\on-finished\index.js:169:15)

[0]     at onFinish (C:\Users\User\Desktop\boilerplate-mern-stack\node_modules\on-finished\index.js:100:5)

[0]     at callback (C:\Users\User\Desktop\boilerplate-mern-stack\node_modules\ee-first\index.js:55:10)

[0]     at IncomingMessage.onevent (C:\Users\User\Desktop\boilerplate-mern-stack\node_modules\ee-first\index.js:93:5)

[0]     at IncomingMessage.emit (events.js:333:22)

[0]     at endReadableNT (_stream_readable.js:1204:12)

[0]     at processTicksAndRejections (internal/process/task_queues.js:84:21)

[1] [HPM] Error occurred while trying to proxy request /api/video/uploadfiles from localhost:3000 to http://localhost:5000/ (ECONNRESET) (https://nodejs.org/api/errors.html#errors_common_system_errors)

[0] [nodemon] app crashed - waiting for file changes before starting...

let storage = multer.diskStorage({
  destination: (req, file, callback) => {
    callback(null, "uploads/");
  },
  filename: (req, file, callback) => {
    callback(null, `${Date.now()}_${file.originalname}`);
  },
  fileFilter: (req, file, callback) => {
    const ext = path.extname(file.originalname);
    if (ext !== ".mp4"{
      return callback(res.status(400).end("only mp4 is allowed"), false);
    }
    callback(null, true);
  }
});

const upload = multer({
  storage: storage
}).single("file");
//=================================
//             Video
//=================================

router.post("/uploadfiles", (req, res) => {
  // 비디오를 서버에 저장한다.
  upload(req, res, err => {
    if (err{
      return res.json({ success: false, err });
    }
    return res.json({
      success: true,
      url: res.req.file.path,
      fileName: res.req.file.filename
    });
  });
});

답변 6

2

와 진짜 같은문제로 5시간 헤멨네요;;; 두분 너무감사합니다.

2

John Ahn님의 프로필 이미지
John Ahn
지식공유자

안녕하세요 ^^  




Front 부분에   Dropzone   옵션 문제 였는데요  

맨윗줄 

<Dropzone onDrop={onDrop} multiple maxSize>

이걸 

<Dropzone onDrop={onDrop} multiple={false} maxSize={800000000}>

이렇게 

바꿔 주시면  됩니다 ^^ 수고하세요 ~ 

1

John Ahn님의 프로필 이미지
John Ahn
지식공유자

아 혹시 메일로 보내실거면  제 메일은 smileajw1004@gmail.com입니다.

1

John Ahn님의 프로필 이미지
John Ahn
지식공유자

안녕하세요 ~!!!   열심히 하시네요 ~~!!!!      혹시    소스 깃헙에 올리셨나요 ~ ?   올리셨으면 제 메일이나 이곳에 
깃헙 올려주실수 있을까요 ?  제가 직접 다운 받아서 해보는게 빠르게 원인 체크할수 있을것 같아서 !  

깃헙알려주시면 6시 30분 이후에 체크해 보겠습니다 ~~~ !! 

0

Halo님의 프로필 이미지
Halo
질문자

선생님 정말 감사드립니다.ㅜㅜㅜ 이렇게 뚝딱 해결주시다니.. 감사합니다..

0

Halo님의 프로필 이미지
Halo
질문자

네! 메일로 주소 보내드렸습니다. 정말 감사합니다.

Halo님의 프로필 이미지
Halo

작성한 질문수

질문하기