【问题标题】:Saving images and retrieving them Xamarin iOS保存图像并检索它们 Xamarin iOS
【发布时间】:2021-04-24 05:16:44
【问题描述】:

所以在最近更新了包括 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# ios xamarin xamarin.forms xamarin.ios


    【解决方案1】:

    旧路径:

    /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 中的应用程序目录,请参阅this document

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

    这基本上使我们无法看到拍摄的照片 来自应用程序的先前构建/版本。

    如果路径真的随着版本的不同而改变,可以在运行时获取app version number,给不同的版本赋予不同的filePath。

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

    【讨论】:

    • 是的,我已经有了使用系统 IO 的特定写入文件代码。由于我们将图像路径存储在数据库中并使用它在 UI 上显示图像,因此我们基本上必须编写代码来循环遍历图像运行时并将图像路径替换为新的 ID 路径。感谢您的链接,我之前已经阅读过扔过那些。今后,我们还将存储图像名称以缓解此问题。
    猜你喜欢
    • 2011-09-03
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    相关资源
    最近更新 更多