Flutter_downloader保存含特殊字符文件名问题求助
解决FlutterDownloader保存文件名被修改的问题
FlutterDownloader默认会自动过滤文件名中的空格、特殊字符及非ASCII字符(比如示例里的“ông”“@”),将其替换为下划线,导致原文件名丢失。要保留原文件名,可按以下方式处理:
- 绕过FlutterDownloader的文件名自动清理逻辑,手动指定完整的文件保存路径,用
saveFilePath参数替代savedDir和fileName的组合。 - 先确认保存目录存在,再拼接包含原文件名的完整路径,直接传入
saveFilePath。
修改后的代码示例:
import 'package:path/path.dart' as path; // 确保保存目录存在(不存在则创建) await Directory(localPath).create(recursive: true); // 拼接带原文件名的完整路径 final fullFilePath = path.join(localPath, "abc ông @.text"); await FlutterDownloader.enqueue( url: url, saveFilePath: fullFilePath, // 直接传入完整路径 saveInPublicStorage: true, );
注意事项:
- 要确保目标目录有写入权限,Android旧版本需申请
WRITE_EXTERNAL_STORAGE权限,iOS需配置对应文件访问权限或使用合规的公共存储路径。 - 不同操作系统对文件名允许的字符有差异,需确认原文件名符合目标平台的命名规则,避免保存失败。
内容的提问来源于stack exchange,提问作者Marlon code
相关产品推荐
相关产品推荐

