From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- files/zh-cn/webguide/api/file_system/index.html | 80 ++++++++ .../api/file_system/introduction/index.html | 210 +++++++++++++++++++++ 2 files changed, 290 insertions(+) create mode 100644 files/zh-cn/webguide/api/file_system/index.html create mode 100644 files/zh-cn/webguide/api/file_system/introduction/index.html (limited to 'files/zh-cn/webguide') diff --git a/files/zh-cn/webguide/api/file_system/index.html b/files/zh-cn/webguide/api/file_system/index.html new file mode 100644 index 0000000000..7643a4e683 --- /dev/null +++ b/files/zh-cn/webguide/api/file_system/index.html @@ -0,0 +1,80 @@ +--- +title: File System API guide +slug: WebGuide/API/File_System +translation_of: Web/API/File_and_Directory_Entries_API/Introduction +--- +

{{ SeeCompatTable() }}

+

The File System API simulates a local file system that web apps can navigate around. You can develop apps that can read, write, and create files and directories in a virtual, sandboxed file system.

+

The asynchronous API methods return without blocking the calling thread. The asynchronous API doesn't give you data by returning values; instead, you have to pass a callback function. The synchronous API is intended to be used inside WebWorkers.

+

For an overview of the File System API, see the following articles:

+

{{ListSubpages}}

+

Browser compatibility

+

{{ CompatibilityTable() }}

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Asynchronous API13 {{ property_prefix("webkit") }}{{ CompatNo() }}{{ CompatNo() }}15 {{ property_prefix("webkit") }}{{ CompatNo() }}
Synchronous API13 {{ property_prefix("webkit") }}{{ CompatNo() }}{{ CompatNo() }}15 {{ property_prefix("webkit") }}{{ CompatNo() }}
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidFirefox Mobile (Gecko)IE PhoneOpera MobileSafari Mobile
Asynchronous API{{ CompatNo() }}0.16{{ property_prefix("webkit") }}{{ CompatNo() }}{{ CompatNo() }}14 {{ property_prefix("webkit") }}{{ CompatNo() }}
Synchronous API{{ CompatNo() }}0.16{{ property_prefix("webkit") }}{{ CompatNo() }}{{ CompatNo() }}14 {{ property_prefix("webkit") }}{{ CompatNo() }}
+
+

See also

+ diff --git a/files/zh-cn/webguide/api/file_system/introduction/index.html b/files/zh-cn/webguide/api/file_system/introduction/index.html new file mode 100644 index 0000000000..e26a6b3c45 --- /dev/null +++ b/files/zh-cn/webguide/api/file_system/introduction/index.html @@ -0,0 +1,210 @@ +--- +title: 文件系统API的基本概念 +slug: WebGuide/API/File_System/Introduction +translation_of: Web/API/File_and_Directory_Entries_API/Introduction +--- +

本文是对Basic_Concepts_About_the_Filesystem_API一文的译文。

+ +

文件系统API(File System API)模拟网络应用程序可以导航到的本地文件系统。你可以开发应用在一个沙盒的虚拟文件系统中读、写、创建以及索引文件。

+ +

该文件系统API与其他相关的API交互。它基于文件写入API(File Writer API),而后者又基于文件API(File API)。每一个API都具有不同的功能。这些API对于网络应用而言是一个巨大的进化飞跃,使得它们能够缓存和处理大量级的数据。

+ +

关于这篇文档

+ +

这篇介绍讨论了文件系统API中的基本概念和术语。它将给出一个大致的蓝图并引导你理解其中的 关键概念. 它也描述了一些限制,如果你忽略了它们将额能产生安全错误。关于该API中使用的更多术语,查看定义部分. 

+ +

关于文件系统API的引用文献部分,查看引用 的登陆页及其子页.

+ +

该规范仍然在定义中并可能会变更.

+ +

概要

+ +

文件系统API包括异步同步两种接口。异步API可以应用于当你不想操作锁定UI的情况。另一方面,同步API允许简单的程序模型,但它必须和WebWorkers一起使用

+ +

该API的用途

+ +

文件系统API的重要性体现在以下方面:

+ + + +

关于你用该api能够创建的特性示例,查看 使用示例 部分.  

+ +

文件系统API和其他存储API

+ +

文件系统API是一些其他存储API,例如 IndexedDB, WebSQL(已于2010年9月18日起弃用),以及AppCache等的替代品。该API对于那些处理blob的应用而言是一种更好的选择,因为:

+ + + +

示例使用场景

+ +

下面是关于你可以如何使用文件系统API的几个示例:

+ + + +

主要概念

+ +

在开始使用文件系统API之前,你需要理解几个概念:

+ + + +

文件系统API是一个文件系统的虚拟表现形式

+ +

该API不会使你能够访问本地文件系统,该沙盒也并不是文件系统的一部分。相反,它是一个虚拟的文件系统,对于网络应用而言它就像是一个成熟的文件系统。它不需要在浏览器之外与本地文件系统产生任何关系。

+ +

这 就意味着,一个网络应用和一个桌面应用不能在同时共享同一个文件。该API不能使你的网络应用脱离浏览器接触到文件,而桌面应用可以。然而,你可以从一个 网络应用中导出一个文件到桌面应用。例如,你可以使用文件API,创建blob, 重定向一个iframe指向该blob, 并调用下载管理器。

+ +

文件系统API可以使用不同的存储类型

+ +

一个应用可能需要临时或固定的存储。临时存储相对容易获得,因为浏览器已经提供了;但它是受到限制并可能在空间耗尽时被浏览器删除。另一方面,固定存储可以为你提供更大的空间并只能被用户删除,但它需要用户获得你的许可。

+ +

使用临时存储进行缓存,而用固定存储来保存那些你希望你的应用保存的类似用户产生的或独特的数据。

+ +

浏览器限定存储的配额

+ +

为了防止一个网络应用占用整个磁盘,浏览器可能会给每一个应用限定配额并分配存储。

+ +

存储空间如何分配以及你可以如何管理存储是浏览器的特性,因此你需要查阅浏览器各自的文档。例如,Google Chrome在规范中允许超过5MB的临时存储并支持配额管理API. 了解更多关于Chrome的实现,查看管理HTML5线下存储.

+ +

文件系统API拥有异步和同步两种版本

+ +

文件系统API拥有异步和同步两种版本。两种版本的API提供相同的功能和特性。事实上,它们基本相同,除了几个不同点以外。

+ + + +

对于一些任务而言同步API可能更简单一些。它直接的,顺序编程的模块可以让代码更易于阅读。其缺点在于它必须与Web Worker交互,而后者有一些限制。

+ +

当使用异步API时,务必使用错误回调

+ +

当使用异步API时,务必总是使用错误回调。虽然对于相关的方法而言错误回调是可选参数,但是明智的做法是把它们当成必选的。至少,通过处理错误得到的错误信息,你可以知道发生了什么。

+ +

文件系统API与其他API交互

+ +

文件系统API被设计用于在网络平台上与其他API以及元素交互。例如,你可能使用到如下内容之一:

+ + + +

文件系统API区分大小写

+ +
文件系统API区分大小写并保留大小写。
+ +

 

+ +

限制

+ +

出于安全的原因,浏览器对于文件的访问施加了一些限制。如果你忽略它们,将会产生安全错误。

+ + + +

文件系统API坚持同源策略

+ +

一个源是脚本执行的文档的URL的域,应用层协议和端口。每一个源拥有它自己关联的一组文件系统

+ +

文件系统上作出的安全限定阻止应用访问不同源的数据。这保护了私有数据以防被访问或删除。例如,当一个应用或页面在http://www.example.com/app/上时,它能访问位于http://www.example.com/dir/上的文件,因为它们拥有相同的源,它不能得到位于http://www.example.com:8080/dir/ (不同端口)或https://www.example.com/dir/ (不同协议)上的文件。

+ +

文件系统API不允许创建或重命名可执行文件

+ +

为防止恶意的应用运行可执行文件,你不能在文件系统API的沙盒中创建可执行文件。

+ +

文件系统是沙盒的

+ +

因为文件系统是沙盒的,一个网络应用不能访问另一个应用的文件。你也不能读写用户硬盘中任意文件夹中的文件。

+ +

不能通过file://来运行你的应用

+ +

你不能在本地通过file://来运行你的应用。如果你那么做了,浏览器将抛出错误,或者你的应用会静默地失败。这一限制也同样针对许多其他的文件API,包括BlobBuilder和FileReader。

+ +

出于测试的目的,你可以在Chrome中通过在启动时添加--allow-file-access-from-files参数来绕开这一限制,这一参数仅用于这个目的。

+ +

定义

+ +

这一部分定义和解释了文件系统API中使用的术语.

+ +
+
blob
+
代表二进制大对象。一个blob是存储在单一对象中的一组二进制数据。这是在网络应用中引用二进制数据的通用方法。一个blob可以是一个图片或音频文件。
+
Blob
+
Blob(以大写B开头的)是一个不可变的数据结构,这意味着一个blob引用的二进制数据不能被直接修改。这使得当Blobs传入到异步API时它们的行为将是可预见的。
+
persistent storage | 固定存储
+
固定存储是一种在浏览器中长期存在的的存储,除非用户永久删除它或应用删除它。
+
temporary storage | 临时存储
+
临时存储是任何网络应用都拥有的。它是自动而不需要请求的,但浏览器可以没有任何警告地删除这些存储。
+
+ +

其他

+ +

规范:http://dev.w3.org/2009/dap/file-system/pub/FileSystem/

+ +

引用: File System API Reference

+ +

相关文档:

+ + -- cgit v1.2.3-54-g00ecf