Создайте интерфейс FileService
в вашем общем коде, создайте новый интерфейс, например, с именем IFileService.cs
public interface IFileService
{
void SavePicture(string name, Stream data, string location="temp");
}
Реализация Android
В своем проекте Android создайте новый класс с именем «Fileservice.cs».
Убедитесь, что он является производным от вашего интерфейса, созданного ранее, и украсьте его информацией о зависимостях:
[assembly: Dependency(typeof(FileService))]
namespace MyApp.Droid
{
public class FileService : IFileService
{
public void SavePicture(string name, Stream data, string location = "temp")
{
var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
documentsPath = Path.Combine(documentsPath, "Orders", location);
Directory.CreateDirectory(documentsPath);
string filePath = Path.Combine(documentsPath, name);
byte[] bArray = new byte[data.Length];
using (FileStream fs = new FileStream(filePath , FileMode.OpenOrCreate))
{
using (data)
{
data.Read(bArray, 0, (int)data.Length);
}
int length = bArray.Length;
fs.Write(bArray, 0, length);
}
}
}
}
Реализация iOS Реализация для iOS в основном такая же:
[assembly: Dependency(typeof(FileService))]
namespace MyApp.iOS
{
public class FileService: IFileService
{
public void SavePicture(string name, Stream data, string location = "temp")
{
var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
documentsPath = Path.Combine(documentsPath, "Orders", location);
Directory.CreateDirectory(documentsPath);
string filePath = Path.Combine(documentsPath, name);
byte[] bArray = new byte[data.Length];
using (FileStream fs = new FileStream(filePath , FileMode.OpenOrCreate))
{
using (data)
{
data.Read(bArray, 0, (int)data.Length);
}
int length = bArray.Length;
fs.Write(bArray, 0, length);
}
}
}
}
Чтобы сохранить свой файл, в своем общем коде вы звоните
DependencyService.Get<FileService>().SavePicture("ImageName.jpg", imageData, "imagesFolder");
и должно быть хорошо идти.