flutter 将PlatformFile转换为文件

chhkpiq4  于 2022-12-05  发布在  Flutter
关注(0)|答案(1)|浏览(242)

我正在使用package file_picker从设备中选择PDF文件并将其上载到远程服务器。

void capturarPDF() async{

    FilePickerResult? result = await FilePicker.platform.pickFiles(
      type: FileType.custom,
      allowedExtensions: ['pdf'],
    );

    if(result == null) return;

    PlatformFile file = result!.files.first ;
    print("file ${file.path}");

    _upload(file);

  }

  void _upload(File file) {

    if (file == null) return;
    setState(() {});
    String base64Image = base64Encode(file.readAsBytesSync());
    String fileName = file.path!.split("/").last;

    String? mimeStr = lookupMimeType(file.path.toString());
    var fileType = mimeStr!.split('/');
    var tipo = "3";

    http.post(Uri.parse(phpEndPoint), body: {
      "image": base64Image,
      "name": fileName,
      "cod_sat": widget.codigo,
      "tipo": tipo,
    }).then((res) async {

      setState(() {
      });
    }).catchError((err) {
      print(err);
    });
  }

我的问题是在_upload(file);行我得到错误:

The argument type 'PlatformFile' can't be assigned to the parameter type 'File'

是否有方法将由file_picker包生成的PlatformFile转换为上传文件所需的File类型?

qij5mzcb

qij5mzcb1#

PlatformFile有一个对文件的路径引用,你可以用这个路径设置一个File对象,如下所示:

final path = file.path
    _upload(File(path));

相关问题