裁剪图片后,“无法打开文件”

时间:2019-09-24 10:26:59

标签: flutter dart

目标是:

1)允许用户选择图片[为此,我使用image_picker]

2)用户将图像裁剪为1:1的长宽比[我为此使用image_crop]

3)将图像上传到Python后端

问题:

裁剪图像后,尝试读取图像以将其发布将返回:

Unhandled Exception: FileSystemException: Cannot open file, path = '/data/user/0/com.example.AppName/cache/image_crop_26d4daef-e297-456c-9c6d-85d2e4c0d0662042323543401355956.jpg' (OS Error: No such file or directory, errno = 2)

奇怪的是,我可以使用'FileImage(_imageFile)'在Flutter中很好地显示图像(考虑_imageFile是File变量)

只是我不能使用_imageFile.length()甚至base64Encode(_imageFile.readAsBytesSync())

有关发生的事情以及如何解决的任何想法?

1 个答案:

答案 0 :(得分:1)

path_provider插件支持访问两个文件系统位置:

  1. 临时目录
  2. 文档目录。

    -临时目录是缓存,系统可以随时删除其内容。因此,将数据存储在这里不利于我们以后获取它。

    -文档目录是我们现在要选择的目录,这是应用程序用于存储仅其可以访问的文件的目录

您正在使用临时目录 (/data/user/0/com.example.AppName/cache/image_crop_26d4daef-e297-456c-9c6d-85d2e4c0d0662042323543401355956.jpg)

如果未删除文件,则可以使用以下代码片段读取文件内容:

final directory = await getTemporaryDirectory();
// For your reference print the AppDoc directory 
final path = directory.path;
final file = File('$path/data.txt');
String contents = await file.readAsString();
return contents;