인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

강민석님의 프로필 이미지
강민석

작성한 질문수

Flutter로 SNS 앱 만들기

인증 메일 전송 / firebase storage에 프로필 이미지 저장 강의 질문

해결된 질문

작성

·

527

0

안녕하세요.

강의 잘 듣고 있습니다.

인증 메일 전송 / firebase storage에 프로필 이미지 저장 강의에 대해서 질문이 있습니다.

스크린샷 2023-11-10 204111.pngfirebase storage에 파일이 잘 저장되기는 했으나, 이미지 파일로 저장되지 않았습니다.스크린샷 2023-11-10 205135.png왜 이렇게 되는지 잘 모르겠습니다.

바쁘실텐데 질문 읽어주셔서 감사합니다.

답변 4

0

DEV MOO님의 프로필 이미지
DEV MOO
지식공유자

보내주신 소스 코드로 확인해본 결과 firebase 에 이미지 형식으로 잘 저장되는걸 확인했습니다.

테스트는 에뮬레이터, 실제기기 어디에서 하고 계시나요?

일단, 터미널에서 아래 명령어를 차례대로 실행 후, 다시 확인 부탁드립니다.

flutter clean
flutter pub get
강민석님의 프로필 이미지
강민석
질문자

터미널에서 명령어를 실행 후 다시 실행하였지만, 변화 없었습니다.

테스트는 에뮬레이터에서 하고 있습니다.

(pixel xl api 30)

에뮬레이터에서는 다음과 같이 .png로 저장되어 있는데

image

fire storage에서는 그냥 파일로 저장됩니다.

image다운 받아서 확장자를 변경시켜 주면, 사진으로 나옵니다.

image

강민석님의 프로필 이미지
강민석
질문자

일단 fire storage에서는 저렇게 나오지만, 다시 불러올 때도 image로 잘 처리됩니다.

앱 기능상 문제는 없는 것으로 보입니다.

 

0

DEV MOO님의 프로필 이미지
DEV MOO
지식공유자

번거로우시겠지만 프로젝트 폴더를 압축해서

gobackad001@gmail.com

로 보내주실 수 있을까요?

강민석님의 프로필 이미지
강민석
질문자

아닙니다.

오히려 신경 써 주셔서 감사합니다.

바로 보내겠습니다.

(참고로 vscode를 이용하여 코딩했습니다.)

강민석님의 프로필 이미지
강민석
질문자

혹시 죄송하지만, 3번째 질문 제가 올린 건데 같이 해결 가능할까요?

0

DEV MOO님의 프로필 이미지
DEV MOO
지식공유자

증상이 재현되지 않아서 해결될지 모르겠습니다만

코드를 다시 작성해봤습니다.

 

  • 먼저, 터미널에서 아래 명령어를 입력해서 mime 패키지를 설치해주세요.

flutter pub add mime
flutter pub get

 

  • auth_repository.dart 파일의 signUp 함수에 아래 코드를 작성해주세요.

  Future<void> signUp({
    required String email,
    required String name,
    required String password,
    required Uint8List? profileImage,
  }) async {
    UserCredential userCredential = await firebaseAuth.createUserWithEmailAndPassword(
      email: email,
      password: password,
    );

    // mime 패키지의 lookupMimeType 함수를 사용해서 file 의 mimeType 을 String 으로 받음
    // lookupMimeType 의 첫 번째 인자값은 파일의 경로를 전달, 선택 인자값 headerBytes 에 파일의 데이터를 int 로 갖고 있는 List 를 전달
    // 원래 lookupMimeType 함수는 파일의 경로에 존재하는 파일의 확장자로부터 mimeType 을 특정하지만, headerBytes 에 파일 데이터가 전달되면
    // 파일 데이터에서 magic-number(파일의 유형에 대한 정보를 갖고 있는 데이터)로 mimeType 을 특정함
    String? mimeType = lookupMimeType('', headerBytes: profileImage!);
    SettableMetadata metadata = SettableMetadata(contentType: mimeType);

    String uid = userCredential.user!.uid;
    await userCredential.user!.sendEmailVerification();

    Reference ref = firebaseStorage.ref().child('profile').child(uid);
    UploadTask uploadTask = ref.putData(profileImage!, metadata);

    print(userCredential.user);
  }

 

  • 문제가 해결되셨으면 답글 부탁 드립니다. 강의에 추가해 놓을게요.

DEV MOO님의 프로필 이미지
DEV MOO
지식공유자

강의 추가 완료

강민석님의 프로필 이미지
강민석
질문자

강의를 진행하는데 큰 문제가 없어 일단 계속 진행하였습니다.

하지만 아래와 같이 수정하여 실행시켜도, 이미지 파일로 저장 되지 않습니다.
image

0

저도 같은 상황입니다.

MemoryImage에서는 Unit8List 데이터를 정상적으로

읽어서 출력하는데는 문제가 없는 상황인데,

스토리지에 올릴 때만 유형을 인식못하는 상황이다보니..

자체 해결 코드 공개 합니다.

 

DEV MOO님의 프로필 이미지
DEV MOO
지식공유자

안드로이드에서 작업하고 계신가요?

강민석님의 프로필 이미지
강민석

작성한 질문수

질문하기