Skip to content
hyukjunkim1116 edited this page Jul 6, 2023 · 3 revisions

✔️ CloudFlare

  • 사용자가 사진을 업로드 할 경우 프론트에서 backend에 1회용 url get 요청.
  • backend는 cloudflare에 미리 설정해둔 id와 token을 사용하여 1회용 url post 요청후 사용자에게 넘겨준다.
  • 그 후 사용자는 1회용 url로 post 요청을 통해 사진을 전송
  • 전송이 성공적으로 완료되면 실제 사진을 볼 수 있는 url을 반환
  • 실제 url을 backend로 post요청함으로써 db에 url(string)형태로 저장
  • 이후 프론트에서 요청시 사진을 url형태로 전송

💻 code

users/views.py
class UserAvatarGetUploadURLView(APIView):
    def post(self, request):
        """GetUploadURL.post

        사용자가 사진을 첨부해서 클라우드플레어에 전송하기전에 먼저 일회용 업로드 url을 요청합니다.

        Args:
            url (str): 클라우드플레어에서 미리 지정한 일회용 url 요청 링크
            one_time_url (str): post요청이 성공할 경우 클라우드플레어에서 온 response. 일회용 업로드 url을 포함하고 있습니다.
        return:
            result(str)): 일회용 url

        """
        url = f"https://api.cloudflare.com/client/v4/accounts/{settings.CF_ID}/images/v2/direct_upload"
        one_time_url = requests.post(
            url,
            headers={
                "Authorization": f"Bearer {settings.CF_TOKEN}",
            },
        )
        one_time_url = one_time_url.json()
        result = one_time_url.get("result")
        return Response(result)

📷 View

Image
Clone this wiki locally