본문 바로가기

Today I Learned (TIL)

24.01.31 수파베이스 스토리지 연결 오류(rls)

728x90
반응형

 

 

 

프로필 이미지 업로드할때 data.url로 들어가던게 무료제공 트래픽을 모두 잡아먹었습니다...!!

2월5일까지는 어떻게 사용이 가능하지만 2월8일이 최종 발표인지라 새로운 데이터 베이스 로

이동주닙를 해야겠네요 문제는 일단 프로필 이미지 업로드 기능에 스토리지를 거쳐서 올리는 방식으로

코드 리팩토링을 진행 해야합니다

const handleFileChange = useCallback(
    async (e: React.ChangeEvent<HTMLInputElement>) => {
      if (e.target) {
        const selectedFile = e.target.files;
        if (selectedFile && selectedFile.length > 0) {
          const file = selectedFile[0];
          // 공백 제거 및 특수 문자 대체
          const safeUserName = user?.nickname?.replace(/\s+/g, '').replace(/[^a-zA-Z0-9]/g, '_');
          // 파일 이름을 안전한 형태로 변환
          const safeFileName = file.name.replace(/[^a-zA-Z0-9.\-_]/g, '_');
          const filePath = `${safeUserName}/${safeFileName}`;

          const { error: uploadError } = await supabase.storage.from('profileimg').upload(filePath, file);
          if (uploadError) {
            console.error('Error uploading image:', uploadError.message);
            alert('이미지 업로드 실패');
            return;
          }

          alert('이미지 업로드 성공');
        }
      }
    },
    [user]
  );
 

일단 이미지 를 'profileimg' 이라는 버켓에 올리도록 설정해봤습니다

Error uploading image: new row violates row-level security policy

이미지 업로드 오류: 새 행이 행 수준 보안 정책을 위반함

흠... 이미지는 안올라가고 경고만 계속 뜨네요 보안 정책을 뭘 위반한건지 이제 알아봅시다

스택 오버 플로우 에서는 이 조건을 추가해보라고합니다

 

새로 설정해주면 한번에 바뀔줄 알았는데 깐깐한 SQL 일일히 하나하나 재 설정 해줍니다


 

결국 튜터님까지 찾아가봤지만 트래픽이 모두 소진되서 내일 아침 트래픽 초기화되면 다시 알아 보기로했습니다..

 

728x90
반응형