django form save메소드 질문이 있습니다.

조회수 402회

프론트에서 파일 url을 받아 파일로 변환하고 그것을 fileField에 저장하려고 합니다.

POST형식으로 파일url을 받고 form.py save()메소드를 오버라이딩하여

받은 url에서 파일을 뽑아내고 뽑아낸 파일을 db에 저장하는 과정입니다.

근데 form.py에 url을 가져오는것 까진 구현을 하였는데 뽑아낸 파일을

저장할 forignKey를 어떻게 form.py에 불러와 db에 저장해야 하는 부분에서

매우 어려움이 있습니다.

어떻게 하면 form.py에서 url으로부터 뽑아낸 파일을 저장할 저장 공간(?)을 불러올 수 있을까요?

1 답변

  • DB에 저장하셔야 하는 것은 파일의 바이너리 콘텐츠 일체가 아니라, 그 파일이 서빙되는 경로일 겁니다.

    1. 파일 내용을 얻으세요. 예를 들어 그 파일이 foo.mp4라고 하겠습니다.
    2. 얻은 파일 내용을 그대로 특정 디렉토리에 쓰세요. 그 디렉토리는 누구나 웹으로 접속 가능한 퍼블릭 경로일 겁니다. 예를 들어 /public/uploads/라고 하겠습니다.
    3. DB에는 특정 테이블 특정 컬럼에 "/uploads/foo.mp4" 문자열이 저장됩니다.
    4. 사용자들에게 그 파일을 보여줄 때는 열심히 코딩을 해서 대충 이런걸 뿌려줍니다.

      <video src="http://localhost:3700/uploads/foo.mp4"></video>
      
    5. (고급과정) 비디오 파일을 내 서버컴퓨터에 저장하고 그걸 스트리밍하려니 너무 버겁다는 생각이 들어 AWS를 사용합니다.

    6. (고급과정) mime-type이라는 걸 확인해서, 사용자가 jpg를 업로드하면 파일 경로를 IMG 컬럼에, mp4를 업로드하면 VID 컬럼에 저장합니다.

    • url로 파일을 받아오고 서버에서 파일 형식을 변환하는 앱이라 파일자체를 저장해야 할것 같습니다 ㅜ form에서db로 직접 접근하는 방법은 없는건가요? poffsle 2020.3.17 13:22

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)