Cộng đồng Hỏi & Đáp của Inflearn
인증 메일 전송 / firebase storage에 프로필 이미지 저장 강의 질문
Đã giải quyết
Viết
·
652
0
안녕하세요.
강의 잘 듣고 있습니다.
인증 메일 전송 / firebase storage에 프로필 이미지 저장 강의에 대해서 질문이 있습니다.
firebase storage에 파일이 잘 저장되기는 했으나, 이미지 파일로 저장되지 않았습니다.
왜 이렇게 되는지 잘 모르겠습니다.
바쁘실텐데 질문 읽어주셔서 감사합니다.
flutterandroidfirebasedart
Câu trả lời 4
0
DEV MOO
Người chia sẻ kiến thức
보내주신 소스 코드로 확인해본 결과 firebase 에 이미지 형식으로 잘 저장되는걸 확인했습니다.
테스트는 에뮬레이터, 실제기기 어디에서 하고 계시나요?
일단, 터미널에서 아래 명령어를 차례대로 실행 후, 다시 확인 부탁드립니다.
flutter clean
flutter pub getalstjrmin0003912
Người đặt câu hỏi
일단 fire storage에서는 저렇게 나오지만, 다시 불러올 때도 image로 잘 처리됩니다.
앱 기능상 문제는 없는 것으로 보입니다.
0
0
DEV MOO
Người chia sẻ kiến thức
증상이 재현되지 않아서 해결될지 모르겠습니다만
코드를 다시 작성해봤습니다.
먼저, 터미널에서 아래 명령어를 입력해서 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);
}
문제가 해결되셨으면 답글 부탁 드립니다. 강의에 추가해 놓을게요.
alstjrmin0003912
Người đặt câu hỏi
강의를 진행하는데 큰 문제가 없어 일단 계속 진행하였습니다.
하지만 아래와 같이 수정하여 실행시켜도, 이미지 파일로 저장 되지 않습니다.







터미널에서 명령어를 실행 후 다시 실행하였지만, 변화 없었습니다.
테스트는 에뮬레이터에서 하고 있습니다.
(pixel xl api 30)
에뮬레이터에서는 다음과 같이 .png로 저장되어 있는데
fire storage에서는 그냥 파일로 저장됩니다.