[유튜브 클론코딩] 3.7 Uploading and Creating a Video part.2

2021. 3. 4. 12:48Projects/유튜브 클론코딩

728x90
반응형

3.7 Uploading and Creating a Video part.2

home에서 나오지 않는 video들을 나오게 하기

이제 Video를 Upload 할 수 있다. 하지만 home으로 가면 video들이 나타나지 않는다.

왜냐하면 link가 망가졌기 때문이다.

 

우선 videos/폴더를 지우고 다음으로 middleware에 video/가 아닌 uploads/videos/에 업로드하게 수정할 것이다.

const multerVideo = multer({dest: "uploads/videos/"});

이것을 /uploads/videos/라고 안쓰는게 중요하다. 왜냐면 그렇게 쓰면 이미 존재하는 폴더라고 생각할수 있기 때문이다.

 

 

일단 존재하는 것을 지우고 새로 하기 위해서 다음과 같이 한다.

console에 mongo라고 치고 help라고 치면 다음과 같은 화면이 나온다.

다음과 같이 쳐서 videos를 지운다. 참고로 db이름은 .env에서 설정했었다.

 

이제 다시 비디오를 업로드해보면 역시나 비디오가 재생이 되지 않는 것을 볼 수가 있는데 콘솔을 확인해보면 해당 주소가 망가졌다고 한다.

 

 

왜 이런거냐면 Express에서는 알다시피 모든 것에 대한 Route가 있다. Upload를 위한 기본적 Router가 필요하다. 그것을 이제 만든다.

↑ app.js

app.js에서 다음과 같이 수정한다.

만약 누군가 '/uploads'로 간다면 express.static()을 이용해 이건 directory에서 file을 보내주는 middleware이다. (주어진 directory에서 file을 전달하는 새로운 middleware function)

따라서 이 경우에 어떤 종류의 controller나 view 같은 건 확인하지 않고 그냥 file만 확인하는 것이다. directory는 "uploads"

이제 /uploads로 가면 'uploads'라는 directory안으로 들어간다는거지

 

↑ home.pug에서 다음 부분을 수정한다.

가짜db에서 mongodb로 넘어가면서 이 부분이 수정이 되어야 한다. (form에서 input type="file"로 받은 그 name="videoFile"이라는 것이 multer를 통해 req.file.path에 URL이 저장이 되었기 때문에 그 path를 fileUrl이라고 db에서도 만들었었다. 그 path가 있어야 동영상을 구해올 수 있기 때문에 저렇게 작성을 해야 한다.)

 

*** 그런데 중요한 것은 유저들의 정보를 서버에 직접 저장하는 것은 좋지 않으므로 따로 분리할 필요가 있다 -> 나중에 할 것임

728x90
반응형