该 API 还在开发中,仅对由 trunk 建立的开发者可用。

chrome.fileSystemProvider

描述 使用 chrome.fileSystemProvider API 创建可以在 Chrome OS 文件管理器中访问的文件系统。
可用版本 尚未完全实现,您必须通过源代码建立 Chromium 才能尝试该 API。了解更多内容
权限 "fileSystemProvider"

清单文件

您必须在扩展程序的清单文件中声明 "fileSystemProvider" 权限才能使用文件系统提供者 API。例如:

      {
        "name": "我的扩展程序",
        ...
        "permissions": [
          "fileSystemProvider"
        ],
        ...
      }
      

概述

文件系统提供者 API 允许扩展程序支持虚拟文件系统,可以在 Chrome OS 的文件管理器中使用。例如可以释放压缩包,还有访问 Google 云端硬盘以外的其他云端文件。

文件处理程序

提供的文件系统既可以提供来自外部(例如远程服务起)的文件系统内容,也可以使用本地文件(例如压缩包)作为输入。

在第二种情况下,提供文件系统的扩展程序清单文件中应当包含 file_handlers 项,当指定文件在文件管理器中选择时启动。当扩展程序由于处理文件而执行时,它应当挂载文件系统,并开始从提供的文件获取内容。

生命周期

提供的文件系统挂载后,Chrome 会记录下来,重新启动后会自动重新挂载。因此,一旦文件系统由提供的扩展程序挂载,它会始终保留,直到扩展程序卸载或调用 unmount 方法。

如果作为文件处理程序,处理的文件需要保留下来,以便重启,或提供文件系统的扩展程序事件页面暂停和恢复时访问。这种情况下,您应该使用 fileSystem.retainEntryfileSystem.restoreEntry

摘要

类型
ProviderError
EntryMetadata
CreateDirectoryRequestedOptions
DeleteEntryRequestedOptions
CreateFileRequestedOptions
CopyEntryRequestedOptions
MoveEntryRequestedOptions
TruncateRequestedOptions
WriteFileRequestedOptions
方法
mount chrome.fileSystemProvider.mount(object options, function successCallback, function errorCallback)
unmount chrome.fileSystemProvider.unmount(object options, function successCallback, function errorCallback)
事件
onUnmountRequested
onGetMetadataRequested
onReadDirectoryRequested
onOpenFileRequested
onCloseFileRequested
onReadFileRequested

类型

ProviderError

扩展程序响应请求时使用的错误代码,如果成功则应该使用 OK
枚举
"OK", "FAILED", "IN_USE", "EXISTS", "NOT_FOUND", "ACCESS_DENIED", "TOO_MANY_OPENED", "NO_MEMORY", "NO_SPACE", "NOT_A_DIRECTORY", "INVALID_OPERATION", "SECURITY", "ABORT", "NOT_A_FILE", "NOT_EMPTY", "INVALID_URL", or "IO"

EntryMetadata

属性
boolean isDirectory

如果为目录则为 true。

string name

项目名称(不是完整路径)。

double size

文件大小,以字节为单位。

Date modificationTime

该项目上一次修改的时间。

string (可选)
mimeType

该项目的 MIME 类型。

CreateDirectoryRequestedOptions

属性
string fileSystemId
integer requestId
string directoryPath
boolean exclusive
boolean recursive

DeleteEntryRequestedOptions

属性
string fileSystemId
integer requestId
string entryPath
boolean recursive

CreateFileRequestedOptions

属性
string fileSystemId
integer requestId
string filePath

CopyEntryRequestedOptions

属性
string fileSystemId
integer requestId
string sourcePath
string targetPath

MoveEntryRequestedOptions

属性
string fileSystemId
integer requestId
string sourcePath
string targetPath

TruncateRequestedOptions

属性
string fileSystemId
integer requestId
string filePath
double length

WriteFileRequestedOptions

属性
string fileSystemId
integer requestId
integer openRequestId
double offset
double length
ArrayBuffer data

方法

mount

chrome.fileSystemProvider.mount(object options, function successCallback, function errorCallback)

挂载指定 fileSystemId(文件系统标识符)和 displayName(显示名称)的文件系统。displayName 显示在文件管理器的左侧面板,可以包含任意字符,包括“/”,但不能为空字符串。displayName 应当具有描述性,但不一定需要唯一。文件管理器用户界面中,重复的显示名称后会添加“(1)”这样的后缀使之唯一。

如果传递的 fileSystemId 对应的文件系统已经由当前扩展程序挂载,则会调用 errorCallback,并传递 ProviderError.EXISTS 值。fileSystemId 不能为空字符串。

参数
object options
string fileSystemId
string displayName
function successCallback

接收 mount() 函数结果的回调函数。

参数
DOMError error
function errorCallback

处理由浏览器产生的错误的回调函数。

errorCallback 参数应该是一个如下形式的函数:

function(DOMError error) {...};
DOMError error

unmount

chrome.fileSystemProvider.unmount(object options, function successCallback, function errorCallback)

取消挂载指定 fileSystemId(文件系统标识符)的文件系统,应当在 onUnmountRequested 执行后调用。此外,提供文件系统的扩展程序即使没有被请求也可以进行取消挂载操作(例如连接丢失或文件错误的情况下)。如果不存在指定标识符的文件系统,或取消挂载失败,则会调用 errorCallback

参数
object options
string fileSystemId
function successCallback

接收 unmount() 函数结果的回调函数。

参数
DOMError error
function errorCallback

处理由浏览器产生的错误的回调函数。

errorCallback 参数应该是一个如下形式的函数:

function(DOMError error) {...};
DOMError error

事件

onUnmountRequested

请求取消挂载标识符为 fileSystemId 的文件系统时产生。响应该事件时应调用 unmount API 方法以及 successCallback。如果不能取消挂载(例如操作未完成),必须调用 errorCallback

addListener

chrome.fileSystemProvider.onUnmountRequested.addListener(function callback)
参数
function callback

callback 参数应该是一个如下形式的函数:

function(object options, function successCallback, function errorCallback) {...};
object options
string fileSystemId
integer requestId
function successCallback

操作成功后由提供文件系统的扩展程序调用的回调函数。

function errorCallback

遇到错误时由提供文件系统的扩展程序调用的回调函数。

errorCallback 参数应该是一个如下形式的函数:

function( ProviderError error) {...};
ProviderError error

onGetMetadataRequested

请求位于 entryPath 的文件或目录元数据时产生,您应该调用 successCallback 返回元数据,如果发生错误则必须调用 errorCallback

addListener

chrome.fileSystemProvider.onGetMetadataRequested.addListener(function callback)
参数
function callback

callback 参数应该是一个如下形式的函数:

function(object options, function successCallback, function errorCallback) {...};
object options
string fileSystemId
integer requestId
string entryPath
function successCallback

onGetMetadataRequested 事件成功时的回调函数。

参数
EntryMetadata metadata
function errorCallback

遇到错误时由提供文件系统的扩展程序调用的回调函数。

errorCallback 参数应该是一个如下形式的函数:

function( ProviderError error) {...};
ProviderError error

onReadDirectoryRequested

请求位于 directoryPath 的目录内容时产生,您应该多次调用 successCallback 分块返回结果,如果发生错误则必须调用 errorCallback

addListener

chrome.fileSystemProvider.onReadDirectoryRequested.addListener(function callback)
参数
function callback

callback 参数应该是一个如下形式的函数:

function(object options, function successCallback, function errorCallback) {...};
object options
string fileSystemId
integer requestId
string directoryPath
function successCallback

onReadDirectoryRequested 事件成功时的回调函数。如果还会返回更多项目,必须将 hasMore 设置为 true,而且必须再次调用,传递其他项目。如果没有可用的项目,hasMore 必须设为 false。

参数
array of EntryMetadata entries
boolean hasMore
function errorCallback

遇到错误时由提供文件系统的扩展程序调用的回调函数。

errorCallback 参数应该是一个如下形式的函数:

function( ProviderError error) {...};
ProviderError error

onOpenFileRequested

请求打开位于 directoryPath 的文件时产生。如果文件不存在,则该操作必须失败。

addListener

chrome.fileSystemProvider.onOpenFileRequested.addListener(function callback)
参数
function callback

callback 参数应该是一个如下形式的函数:

function(object options, function successCallback, function errorCallback) {...};
object options
string fileSystemId
integer requestId
string filePath
enum of "READ", or "WRITE" mode
function successCallback

操作成功后由提供文件系统的扩展程序调用的回调函数。

function errorCallback

遇到错误时由提供文件系统的扩展程序调用的回调函数。

errorCallback 参数应该是一个如下形式的函数:

function( ProviderError error) {...};
ProviderError error

onCloseFileRequested

请求关闭之前使用 openRequestId 打开的文件时产生。

addListener

chrome.fileSystemProvider.onCloseFileRequested.addListener(function callback)
参数
function callback

callback 参数应该是一个如下形式的函数:

function(object options, function successCallback, function errorCallback) {...};
object options
string fileSystemId
integer requestId
integer openRequestId
function successCallback

操作成功后由提供文件系统的扩展程序调用的回调函数。

function errorCallback

遇到错误时由提供文件系统的扩展程序调用的回调函数。

errorCallback 参数应该是一个如下形式的函数:

function( ProviderError error) {...};
ProviderError error

onReadFileRequested

请求读取之前使用 openRequestId 打开的文件内容时产生。您应该多次调用 successCallback 分块返回结果,如果发生错误,则必须调用 errorCallback

addListener

chrome.fileSystemProvider.onReadFileRequested.addListener(function callback)
参数
function callback

callback 参数应该是一个如下形式的函数:

function(object options, function successCallback, function errorCallback) {...};
object options
string fileSystemId
integer requestId
integer openRequestId
double offset
double length
function successCallback

onReadDirectoryRequested 事件成功时的回调函数。如果还会返回更多数据,必须将 hasMore 设置为 true,而且必须再次调用,传递其他数据。如果没有可用的数据,hasMore 必须设为 false。

参数
ArrayBuffer data
boolean hasMore
function errorCallback

遇到错误时由提供文件系统的扩展程序调用的回调函数。

errorCallback 参数应该是一个如下形式的函数:

function( ProviderError error) {...};
ProviderError error