c# - 保存图像并检索它们 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,但没有运气。
没有其他方法可以检索图像吗?还是我们必须将库路径设置为动态视图?
解决方案
老路:
/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 文件路径之间的区别。)
推荐阅读
- sql - PostgreSQL 替换别名列值
- kotlin - Launch 在 Kotlin 中出现编译错误
- python - Raspberry Pi SimpleHTTPServer 在启动时启动并启动铬
- plotly - 是否可以在 plotly 中创建单个美国州的等值线图?
- pycharm - 在 Ubuntu 上运行 Odoo 时出现 Odoo Pycharm 错误
- python - 如果屏幕上有像素,Python会播放声音
- javafx - 让 fileChooser 在舞台上工作时出现问题,不确定如何设置正确的舞台?
- java - 扩展超类时自动将子类添加到列表中
- java - JComponent setSize() 和 setLocation() 不起作用
- firebase - nodeJS中的Firebase sinon / chai单元测试