如何用FFUploadedFile类型数据通过File.fromUri创建File对象?
问题解决:FFUploadedFile适配File.fromUri的类型错误
错误根源
Uri.parse()要求传入字符串类型的文件路径,但你传入的是FFUploadedFile实例,类型不匹配导致报错。更关键的是:你完全不需要通过File.fromUri读取文件——因为FFUploadedFile已经直接存储了文件的字节数据(bytes字段)。
最优解决方案
直接利用FFUploadedFile自带的bytes属性创建ArchiveFile,无需绕路生成File对象,代码更简洁高效:
// 直接使用uploadedImage的bytes字段 final bytes = uploadedImage.bytes; final archiveFile = ArchiveFile(uploadedImage.name, bytes.length, bytes);
若必须生成File对象(可选场景)
如果后续业务逻辑强制要求使用File类型,可以将FFUploadedFile的字节写入临时文件:
import 'dart:io'; import 'package:path_provider/path_provider.dart'; // 获取设备临时目录 final tempDir = await getTemporaryDirectory(); // 拼接临时文件路径 final tempFile = File('${tempDir.path}/${uploadedImage.name}'); // 将字节写入临时文件 await tempFile.writeAsBytes(uploadedImage.bytes); // 此时tempFile就是标准的File对象,可正常使用 final bytes = await tempFile.readAsBytes(); final archiveFile = ArchiveFile(uploadedImage.name, bytes.length, bytes);
内容的提问来源于stack exchange,提问作者melee
相关产品推荐
相关产品推荐

