问题标签 [file-system-access-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
196 浏览

directory - Edge browser Native File System removeEntry 使用

我正在使用最新版本的 Edge(Canary 版本 86.0.615.0),我可以获得新的本机文件系统 API showOpenFilePicker 让我访问文件,但我找不到对 directoryHandle 函数的引用,包括 removeEntry 函数,如果用户选择删除文件。我错过了一个特殊的标志吗?我有一个 Origin-Tracker 代码,我还为 Native File System API 设置了实验标志。

0 投票
1 回答
723 浏览

javascript - 如何使用文件系统访问 API 在 Web 浏览器中递归读取本地文件和目录

我需要读取使用新的 Web 文件系统访问 API 打开的文件夹的所有文件和目录。我能够读取目录但不知道如何以优雅的方式继续递归

0 投票
1 回答
249 浏览

javascript - JavaScript:文件系统访问 API:无法将块排入封闭的可读流

我正在使用 JavaScript 文件系统访问 API 将可读流的输出流式传输到FileSystemWritableFileStream. 我创建了一个可写流包装器来使用该writeStream.pipeTo(readStream)方法,但是在使用手动读取ReadableStream和写入FileSystemWritableFileStream. 我跳过使用的标头,seek因为它包含文件大小,然后开始写入数据。这是代码:

这在其他地方使用,如下所示:

一旦我开始写作,我就会在控制台中收到以下错误:

0 投票
2 回答
881 浏览

javascript - 访问给定文件夹中的所有文件(文件系统访问 API)

我可以使用文件系统访问 API ( https://web.dev/file-system-access/ ) 在网站中创建类似文件资源管理器的东西 (react)。

我打算做一个简单的在线文件浏览器,让你浏览打开一个文件夹,然后让你浏览文件夹,播放视频和 MP3。

(我知道几年前这是不可能的,因为 js 不可能访问本地存储中的任何内容,我只想知道是否有任何更改。如果文件系统访问 API 不是要走的路,您能否建议一些更好的方法来从文件夹中读取批量本地文件。)

0 投票
1 回答
695 浏览

javascript - 文件系统访问 API createWritable() 方法在控制台中有效,但在脚本中无效

我目前正在为未来的项目掌握文件系统访问 API,并且在使用以下行中的 createWritable() 方法时遇到了困难:

const writable = await fileHandle.createWritable();

当我触发它时,它给了我错误:

TypeError: fileHandle.createWritable is not a function

但是,当我在控制台中运行这个确切的命令时,它可以完美运行。

如果这完全相关,我正在使用 Windows 10。谢谢您的帮助。

我将在下面包含我的相关 HTML 和 JS:

HTML:

JS:

0 投票
2 回答
178 浏览

javascript - FileSystemAccessAPI 打开系统文件选择器,但不写入文件

我有一个 HTML 表单(在本地运行),我想将其输出转储到本地驱动器上用户指定的位置。我将字段格式化为字符串 ( contents),然后将其传递给以下 JS 代码:

写文件.js

然后我在 HTML 代码中将它作为一个按钮实现,我相信它可以正常工作:

表单.html

这是 MDN Web Docs 的“概念和用法”部分的直接实现

Windows 保存对话框打开,允许用户保存文件,但文件为空白。我也尝试用contents一个文字字符串替换,它没有出现在文件中。我不确定还有哪些其他调试方法,因为我很少开发 webapps(尽管我知道它们存在)。

我的想法是,由于此 API 仅限于安全上下文 (https://),它不能在本地 html 文件 (file:///) 上运行。但是不应该有一种方法让本地 HTML 文件绕过这个,因为它是在一个封闭的系统中吗?

浏览器:Chrome 88.0.4324.182

视窗版本:视窗 10 专业版

0 投票
1 回答
3439 浏览

file-system-access-api - DOMException:当前上下文中的用户代理或平台不允许该请求

尝试使用FileSystemFileHandlegetFile()的方法访问文件时,可能会发生此错误:DOMException: The request is not allowed by the user agent or the platform in the current context.

此代码有效:

但是,如果您存储fileHandle(例如使用 IndexedDB)以保持对文件的访问,即使在页面刷新后,它也将不起作用。刷新页面后,该getFile()方法会抛出 DOMException 错误。

这是怎么回事?

0 投票
1 回答
737 浏览

reactjs - 在 Electron + Create React App 中使用文件系统访问 API 写入文件失败

我有一个 create-react-app 使用File System Access API读写本地文件。在浏览器(支持它的 Chrome 或 Edge)中运行时,读取和写入文件都可以正常工作。

当应用程序在 Electron 中运行时,读取工作正常但写入失败,原因如下:Uncaught (in promise) DOMException: The request is not allowed by the user agent or the platform in the current context.

我正在使用最新的 Electron (12.0.1),它使用与我的 Chrome 浏览器中相同的 Chromium (89.0.4389.82)。

下面是相关代码。requestPermission调用后的控制台日志显示在浏览器和trueElectron中。grantedtruedenied

我尝试webSecurity在创建BrowserWindow时禁用,禁用沙箱appendSwitch但没有任何帮助。

有没有办法给 Electron 中的 Chromium 更多权限?

如果没有,我愿意在 Electron 中以不同的方式处理文件写入。在那种情况下,在代码中写什么来代替TODO?请注意,因为它是一个 create-react-app,所以该fs模块不可用

0 投票
1 回答
50 浏览

javascript - 在 Web 文件系统访问 API 中读取 ANSI 文件

我正在尝试使用文件系统访问 API 获取文件,并且使用以下代码效果很好:

问题是当我们有一个 ANSI 编码的文件时,像 Ö、Ü 和 Ä 这样的德语字符会变成 �,而它与 UTF-8 编码的文件完美搭配。

我无论如何都找不到使用file.text()ANSI 代码读取文件

感谢帮助

0 投票
1 回答
314 浏览

reactjs - React useEffect hook 导致 DOMException: User activation is required to request permissions

我有一个 ReactuseEffect挂钩,可以读取用户之前批准的本地文件。

要读取文件,它使用该[FileSystemHandle.queryPermission()][1]方法,如果没有,granted它将提示用户使用该FileSystemHandle.requestPermission()方法进行访问。

问题是这发生在用户有机会与页面交互之前,这会导致DOMException: User activation is required to request permissions.错误。

有没有办法解决?