Windows 10 UWP Javascript应用下载权限及文件读写相关问题咨询
针对UWP JavaScript应用文件访问问题的解答
问题1:是否可以在Javascript中直接调用文件选择器?是否需要额外添加权限?还是需要改为基于WebView2的应用,通过C#实现该功能?
- 完全可以直接在JavaScript中调用UWP原生提供的文件选择器API,无需切换到WebView2 + C#的技术栈。
- 调用文件选择器本身不需要额外申请清单权限,只要用户主动选择了目标文件/文件夹,应用就会自动获得对应路径的读写权限,支持读写C盘任意用户自选文件夹、下载目录内的选中内容。
- 调用FolderPicker的示例代码如下:
const picker = new Windows.Storage.Pickers.FolderPicker(); picker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.downloads; picker.fileTypeFilter.append("*"); picker.pickSingleFolderAsync().then(function (folder) { if (folder) { // 可直接对folder对象执行读写、创建文件等操作 Windows.Storage.FileIO.writeTextAsync(folder.createFileAsync("test.txt"), "测试内容"); } });
问题2:官方说明中提到的"本应用创建的用户下载目录文件夹"具体位置在哪里?是不是下载目录下的子文件夹?是否需要主动创建?若需要,是否可以通过Javascript创建?
- 该文件夹是系统默认下载目录下的子文件夹,文件夹名称默认和你的UWP应用在清单中配置的显示名称完全一致。
- 你可以选择主动创建,也可以等首次写入文件时由系统自动生成。
- 可以通过JavaScript直接创建,调用
Windows.Storage.DownloadsFolder.createFolderAsync("自定义文件夹名")方法即可,创建完成后该文件夹内的所有内容应用默认拥有全量读写权限,无需用户授权。
问题3:是否是我遗漏了应用清单中的某项权限?如果是,对应的权限是哪一项?
- 如果你仅使用文件选择器获取权限,或者仅访问下载目录内本应用创建的内容,不需要额外添加任何权限,默认的Internet (Client)权限足够。
- 如果你需要无需用户选择、直接访问用户的文档库、图片库、音乐库等系统库路径,需要在应用清单的「功能」标签页勾选对应的库访问权限。
- 如果你需要无需用户选择、直接访问整个本地文件系统的任意路径,需要在应用清单的源代码视图中添加如下权限声明:
配置完成后还需要用户手动在系统「设置-应用和功能-找到你的应用-高级选项」中开启「文件系统」访问权限,该权限才会生效。<Capabilities> <uap:Capability Name="broadFileSystemAccess" /> </Capabilities>
内容的提问来源于stack exchange,提问作者Steve Brooker
相关产品推荐
相关产品推荐

