如何在Edge浏览器的原生主机中获取文件读取权限
How to get file read permission in Edge browser's native host
我正在尝试从 UWP 中实现的 Edge 浏览器的本机主机读取设置文件。此设置文件有一些 URL 列表以在扩展中处理它。但我无法读取本机主机中的文件。读取文件时出现以下异常。
System.UnauthorizedAccessException: 'Access to the path
'C:\Users\abc\Desktop\Settings.dat' is denied.'
string fileName = "C:\Users\Sameer\Desktop\Settings.dat";
bool bfileExist = File.Exists(fileName);
if (bfileExist) { byte[] fileData = File.ReadAllBytes(fileName); }
有谁知道在 Edge 浏览器的本机主机中读取文件吗?请告诉我。
UWP 已提供 broadFileSystemAccess
功能,可以使用 Windows.Storage namespace
中的 API 访问更广泛的文件。您需要在访问之前添加受限的 broadFileSystemAccess
能力。并且请避免使用 System.IO
api。更多请参考以下代码
var file= await Windows.Storage.StorageFile.GetFileFromPathAsync(fileName);
if (file!= null)
{
byte[] result;
using (Stream stream = await file.OpenStreamForReadAsync())
{
using (var memoryStream = new MemoryStream())
{
stream.CopyTo(memoryStream);
result = memoryStream.ToArray();
}
}
}
我已经使用以下代码解决了这个问题
string fileName = "C:\Users\Sameer\Desktop\Settings.dat";
Windows.Storage.StorageFile file = await Windows.Storage.StorageFile.GetFileFromPathAsync(fileName);
if(file != null)
{
var bufferData = await Windows.Storage.FileIO.ReadBufferAsync(file);
Windows.Storage.Streams.DataReader dataReader = Windows.Storage.Streams.DataReader.FromBuffer(bufferData);
byte[] fileData = new byte[bufferData.Length];
dataReader.ReadBytes(fileData);
}
我正在尝试从 UWP 中实现的 Edge 浏览器的本机主机读取设置文件。此设置文件有一些 URL 列表以在扩展中处理它。但我无法读取本机主机中的文件。读取文件时出现以下异常。
System.UnauthorizedAccessException: 'Access to the path 'C:\Users\abc\Desktop\Settings.dat' is denied.'
string fileName = "C:\Users\Sameer\Desktop\Settings.dat";
bool bfileExist = File.Exists(fileName);
if (bfileExist) { byte[] fileData = File.ReadAllBytes(fileName); }
有谁知道在 Edge 浏览器的本机主机中读取文件吗?请告诉我。
UWP 已提供 broadFileSystemAccess
功能,可以使用 Windows.Storage namespace
中的 API 访问更广泛的文件。您需要在访问之前添加受限的 broadFileSystemAccess
能力。并且请避免使用 System.IO
api。更多请参考以下代码
var file= await Windows.Storage.StorageFile.GetFileFromPathAsync(fileName);
if (file!= null)
{
byte[] result;
using (Stream stream = await file.OpenStreamForReadAsync())
{
using (var memoryStream = new MemoryStream())
{
stream.CopyTo(memoryStream);
result = memoryStream.ToArray();
}
}
}
我已经使用以下代码解决了这个问题
string fileName = "C:\Users\Sameer\Desktop\Settings.dat";
Windows.Storage.StorageFile file = await Windows.Storage.StorageFile.GetFileFromPathAsync(fileName);
if(file != null)
{
var bufferData = await Windows.Storage.FileIO.ReadBufferAsync(file);
Windows.Storage.Streams.DataReader dataReader = Windows.Storage.Streams.DataReader.FromBuffer(bufferData);
byte[] fileData = new byte[bufferData.Length];
dataReader.ReadBytes(fileData);
}