Можно ли открыть файл с удаленного сетевого ресурса в приложении Xamarin UWP.
UWP предоставил broadFileSystemAccess
возможность доступа к более широкому файлу через API в Windows.Storage namespace
. Вам нужно добавить ограниченную возможность broadFileSystemAccess
перед доступом.
<Package
...
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap mp rescap">
...
<Capabilities>
<rescap:Capability Name="broadFileSystemAccess" />
</Capabilities>
Если вы хотите получить файл в .NET Standard
, вам нужно создать DependencyService
.
Создать интерфейс доступа к файлам в вашем .NET Standard
.
IFileAccess
public interface IFileAccess
{
Task<FileData> GetFileStreamFormPath(string Path);
}
public class FileData
{
public byte[] DataArray { get; set; }
public string FileName { get; set; }
public string FilePath { get; set; }
}
Реализация интерфейса IFileAccess
в собственном проекте UWP.
FileAccessImplementation
[assembly: Xamarin.Forms.Dependency(typeof(FileAccessImplementation))]
namespace App6.UWP
{
public class FileAccessImplementation : IFileAccess
{
public async Task<FileData> GetFileStreamFormPath(string Path)
{
var file = await StorageFile.GetFileFromPathAsync(Path);
byte[] fileBytes = null;
if (file == null) return null;
using (var stream = await file.OpenReadAsync())
{
fileBytes = new byte[stream.Size];
using (var reader = new DataReader(stream))
{
await reader.LoadAsync((uint)stream.Size);
reader.ReadBytes(fileBytes);
}
}
var FileData = new FileData()
{
FileName = file.Name,
FilePath = file.Path,
DataArray = fileBytes
};
return FileData;
}
}
}
Использование
var file = DependencyService.Get<IFileAccess>().GetFileStreamFormPath(@"\\remote\folder\setup.exe");