首页 > 解决方案 > 保存图像并检索它们 Xamarin iOS

问题描述

因此,在最近更新了包括 Xamarin Forms 在内的依赖项后,我在 iOS 的应用程序中再也看不到保存的图像。我们使用https://github.com/jamesmontemagno/MediaPlugin来添加/拍照,甚至尝试将特定的操作系统文件写入环境文件夹:

专门用于保存图像的 iOS:

public string WriteFile(byte[] data)
{
    var path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
    if (!Directory.Exists(path))
        Directory.CreateDirectory(path);

    var filePath = Path.Combine(path, CameraHelper.GenerateFileName());

    File.WriteAllBytes(filePath, data);

    return filePath;
}

图像保存在每次应用更新后都会更改的 ID 下。这显然破坏了我们之前的方法,因为我们在表格中保存了图像路径(之前总是相同的)并使用它来显示图像的预览。

这是新的图像路径:

“/var/mobile/Containers/Data/Application/215E777E-A624-487E-B687-6647F8C0D1DC/Documents/01_18_2021_04_24_07_98524.jpg”

老路:

/data/user/0/com.company.ourapp/files/Pictures/

这基本上使我们无法看到从应用程序的先前版本/版本拍摄的图片。我已经搜索了 Xamarin Forms/Essentials 和 Stack Overflow,但没有运气。

没有其他方法可以检索图像吗?还是我们必须将库路径设置为动态视图?

标签: c#iosxamarinxamarin.formsxamarin.ios

解决方案


老路:

/data/user/0/com.company.ourapp/files/Pictures/

这显然是Android文件路径而不是 iOS 文件路径。Android 的文件系统与 iOS 不同。

这是新的图像路径:

“/var/mobile/Containers/Data/Application/215E777E-A624-487E-B687-6647F8C0D1DC/Documents/01_18_2021_04_24_07_98524.jpg”

这是沙箱中 iOS 文档文件夹的正确路径。有关iOS 中的应用程序目录,请参阅此文档。

我认为您在检索图像时应该区分 iOS 和 Android。

这基本上使我们无法看到从应用程序的先前版本/版本拍摄的图片。

如果路径真的随着版本的不同而变化,你可以在运行时获取应用程序版本号,并为不同的版本赋予不同的filePath。

(虽然我认为您的问题是 iOS 和 Android 文件路径之间的区别。)


推荐阅读