본문 바로가기

개발하자

파일 선택기를 사용하여 플랫폼 파일을 파일로 만들기

반응형

파일 선택기를 사용하여 플랫폼 파일을 파일로 만들기

파일 선택 플러그인을 사용하여 장치에서 파일을 선택하고 있습니다. 파일은 플랫폼 파일의 데이터 형식으로 선택되지만, 파일을 Firebase Storage로 보내고 싶어서 일반 파일이 필요합니다. 플랫폼 파일을 파일로 변환하여 Firebase Storage로 보낼 수 있는 방법은 무엇입니까? 코드는 다음과 같습니다:

PlatformFile pdf;
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();

void _trySubmit() async {
    final isValid = _formKey.currentState.validate();
    if (isValid) {
      _formKey.currentState.save();
      final ref = FirebaseStorage.instance
          .ref()
          .child('article_pdf')
          .child(title + '-' + author + '.pdf');
      await ref.putFile(pdf).onComplete; // This throws an error saying that The argument type 'PlatformFile' can't be assigned to the parameter type 'File'
    }
  }

void _pickFile() async {
    FilePickerResult result = await FilePicker.platform.pickFiles(
      type: FileType.custom,
      allowedExtensions: ['pdf'],
    );
    if (result != null) {
      pdf = result.files.first;
    }
  }



시도해 보십시오:

PlatformFile pdf;
final File fileForFirebase = File(pdf.path);

해피코딩! :)




웹 앱에서 flutter_file_picker로 이미지 파일을 Firestore에 게시할 수 있습니다. (FAQ 페이지에서 가져온 것):

// get file
final result = await FilePicker.platform.pickFiles(type: FileType.any, allowMultiple: 
false);

if (result.files.first != null){
  var fileBytes = result.files.first.bytes;
  var fileName = result.files.first.name;

  // upload file
  await FirebaseStorage.instance.ref('uploads/$fileName').putData(fileBytes);
}



이거 된다

File(platformFile.name)

논리상의 파일명에 중복되지 않도록 하세요.




파일이 여러 개 있는 경우 를 기준으로 다음 작업을 수행할 수 있습니다:

FilePickerResult? result = await FilePicker.platform.pickFiles(allowMultiple: true);

if (result != null) {
  List<File> files = result.paths.map((path) => File(path)).toList();
} else {
  // User canceled the picker
}

NB: 나는 그것이 Flutter Web과 함께 작동할지 확신할 수 없다. 다른 모든 플랫폼과 함께 작동해야 합니다.


반응형