UWP 访问存储文件被拒绝
UWP Access Denied to StorageFile
我在使用
时被拒绝访问
StorageFile.GetFileFromPathAsync(filePath)
从我阅读的其他帖子和一些文档中,当在 Package.appxmanifest
等中声明时,UWP 只能访问视频库、视频(与配置文件相关的文件夹)...
使用 FilePicker 我可以毫无问题地访问这些位置,但是 StorageFile.GetFileFromPathAsync
是在页面加载时自动将这些文件加载到列表中。
如何使用此功能加载已知文件夹视频库、视频等外部文件
您只能使用此方法访问 UWP 应用可以访问的安全路径上的文件。如果您通过文件或文件夹选择器访问另一个位置,则必须使用 Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList
缓存对它的访问。 API 允许您存储 StorageFile
或 StorageFolder
的现有实例,并为您提供一个 "token",这是一个 string
,您可以通过它稍后访问再次选择 StorageItem
。
StorageFile file = await savePicker.PickSaveFileAsync();
if (file != null)
{
string faToken = StorageApplicationPermissions.FutureAccessList.Add(file);
}
现在文件在 FutureAccessList
中,您稍后可以检索它:
StorageFile file = await StorageApplicationPermissions.FutureAccessList.GetFileAsync(faToken);
存储在 FutureAccessList
中的项目即使在应用程序关闭并重新打开时仍然存在,因此它可能是您用例的理想解决方案。但是,请记住 FutureAccessList
最多可以存储 1000 个项目(请参阅 Docs),并且您必须对其进行维护 - 所以如果您不再需要某个项目,请确保将其删除,以便它不再计入限制。
第二种解决方案是声明 broadFileSystemAccess
capability。然而,这是一项受限的功能,您的应用必须有充分的理由使用它。
我在使用
时被拒绝访问StorageFile.GetFileFromPathAsync(filePath)
从我阅读的其他帖子和一些文档中,当在 Package.appxmanifest
等中声明时,UWP 只能访问视频库、视频(与配置文件相关的文件夹)...
使用 FilePicker 我可以毫无问题地访问这些位置,但是 StorageFile.GetFileFromPathAsync
是在页面加载时自动将这些文件加载到列表中。
如何使用此功能加载已知文件夹视频库、视频等外部文件
您只能使用此方法访问 UWP 应用可以访问的安全路径上的文件。如果您通过文件或文件夹选择器访问另一个位置,则必须使用 Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList
缓存对它的访问。 API 允许您存储 StorageFile
或 StorageFolder
的现有实例,并为您提供一个 "token",这是一个 string
,您可以通过它稍后访问再次选择 StorageItem
。
StorageFile file = await savePicker.PickSaveFileAsync();
if (file != null)
{
string faToken = StorageApplicationPermissions.FutureAccessList.Add(file);
}
现在文件在 FutureAccessList
中,您稍后可以检索它:
StorageFile file = await StorageApplicationPermissions.FutureAccessList.GetFileAsync(faToken);
存储在 FutureAccessList
中的项目即使在应用程序关闭并重新打开时仍然存在,因此它可能是您用例的理想解决方案。但是,请记住 FutureAccessList
最多可以存储 1000 个项目(请参阅 Docs),并且您必须对其进行维护 - 所以如果您不再需要某个项目,请确保将其删除,以便它不再计入限制。
第二种解决方案是声明 broadFileSystemAccess
capability。然而,这是一项受限的功能,您的应用必须有充分的理由使用它。