@capacitor-firebase/storage

中文文档
8.6.0发布于 2026/10/31Apache-2.0TypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 1.1万

在Android,iOS,和Web上用于Firebase云存储的电容插件.

中文使用文档
文档目录39 节
  1. 使用大小写
  2. 兼容性
  3. 指南
  4. 安装
  5. 机器人
  6. iOS系统
  7. 配置
  8. 演示
  9. 启动模板
  10. 使用量
  11. 上传文件
  12. 下载文件
  13. 以文件系统插件下载文件
  14. 获取下载 URL
  15. 在目录中列出文件
  16. 读取和更新文件元数据
  17. 删除文件
  18. 使用云存储模拟器
  19. API 密码
  20. 删除文件(...)
  21. 获得下载Url(...)
  22. 获取气象数据(...)
  23. 列表 Files (...)
  24. 更新Metadata (...)
  25. 下载文件(...)
  26. 上传文件(...)
  27. 使用计算器(...)
  28. 接口
  29. 类型异名
  30. 财务问题
  31. 我如何追踪上传或下载的进展?
  32. 不同平台对文件的下载有何不同?
  33. 我该如何上传用户选择的文件 ?
  34. 我如何存储关于文件的额外信息?
  35. 我能测试一下云存储模拟器吗?
  36. 相关插件
  37. 通讯
  38. 更改日志
  39. 许可证

电容器火地库云存储插件

非官方电容插件 火地云存储[^1]

使用大小写

Firebase云存储插件通常用于存储和服务用户生成的内容,例如:

  • 用户生成的内容: 上传由您的用户创建的照片或其他文件到 Cloud 存储.
  • 文件下载: 将文件下载到Android和iOS或作为本地文件系统 Blob 在网络上.
  • 内容交付: 获取文件的下载 URL 以显示或共享.
  • 文件管理:在目录中列出文件,读取并更新其元数据,或删除.

兼容性

插件版本电容版本状态
8.x.x (英语)>=8.x.x积极支持
7.x.x (中文(简体) )7.x.x (中文(简体) )折旧
6.x.x (中文(简体) )6.x.x (中文(简体) )折旧

指南

安装

你可以用我们的 AI 辅助设置 以安装插件. 添加数据 超级技能 至您的 AI 工具,使用以下命令:

npx skills add capawesome-team/skills --skill capacitor-plugins

然后使用下列提示:

Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capacitor-firebase/storage` plugin in my project.

如果你喜欢 手动设置,通过运行以下命令来安装插件,并遵循下面的平台特定指令:

npm install @capacitor-firebase/storage
npx cap sync

如果您还没有将 Firebase 添加到您的项目中(机器人 编号 : iOS系统) (中文(简体) ).

机器人

变量

如果需要, 您可以在您的应用程序中定义以下工程变量 variables.gradle 要更改依赖的默认版本的文件 :

  • $firebaseStorageVersion 版本 com.google.firebase:firebase-storage (默认 : 22.0.1(中文(简体) )

如果您在工程中遇到其它插件的依赖性冲突, 这会有所帮助 .

iOS系统

Swift 软件包管理器

在您的 capacitor.config.json (或 capacitor.config.ts) 避免 SwiftPM 软件包识别相撞数字 :

{
  "experimental": {
    "ios": {
      "spm": {
        "packageOptions": {
          "@capacitor-firebase/storage": {
            "symlink": true
          }
        }
      }
    }
  }
}

请注意目标 packageOptions 支持需要控制器 CLI 8.4.0+ (中文(简体) )。 。 。 .

配置

此插件不需要配置 .

演示

这里有一个实例: robingenz/电容器-火力基地-插座-demo

启动模板

以下启动模板可供使用:

使用量

以下例子显示如何上传并下载文件,获得下载URL,列出文件,读取并更新文件元数据,删除文件,并连接到"云存储模拟器".

上传文件

上传文件到 Cloud 存储器 。 在Android和iOS上,提供 uri 到要上传的文件。 在网络上提供上传数据 Blob 使用 blob 选项。 随着上传进度和 completed 设置为 true 上传完成后 :

import { FirebaseStorage } from '@capacitor-firebase/storage';

const uploadFile = async () => {
  return new Promise((resolve, reject) => {
    FirebaseStorage.uploadFile(
      {
        path: 'images/mountains.png',
        uri: 'file:///var/mobile/Containers/Data/Application/E397A70D-67E4-4258-236E-W1D9E12111D4/Library/Caches/092F8464-DE60-40B3-8A23-EB83160D9F9F/mountains.png',
      },
      (event, error) => {
        if (error) {
          reject(error);
        } else if (event?.completed) {
          resolve();
        }
      }
    );
  });
};

下载文件

从 Cloud 存储器下载文件 。 在Android和iOS上,文件被下载到本地文件系统,使用 uri 选项。 在 Web 上, 下载的文件被返回为 Blob 在召回事件中:

import { FirebaseStorage } from '@capacitor-firebase/storage';

const downloadFileWithFirebaseStorage = async () => {
  return new Promise((resolve, reject) => {
    FirebaseStorage.downloadFile(
      {
        path: 'images/mountains.png',
        uri: 'file:///var/mobile/Containers/Data/Application/E397A70D-67E4-4258-236E-W1D9E12111D4/Library/Caches/mountains.png', // Only available for Android and iOS
      },
      (event, error) => {
        if (error) {
          reject(error);
        } else if (event?.completed) {
          // On Web, the downloaded file is available as a Blob in event.blob
          resolve(event?.blob);
        }
      }
    );
  });
};

以文件系统插件下载文件

或者,您可以检索文件的下载 URL,并使用官方下载 电容文件系统 插件 :

import { FirebaseStorage } from '@capacitor-firebase/storage';
import { Filesystem, Directory } from '@capacitor/filesystem';

const downloadFileWithFilesystem = async () => {
  const { downloadUrl } = await FirebaseStorage.getDownloadUrl({
    path: 'images/mountains.png',
  });
  const { path } = await Filesystem.downloadFile({
    url: downloadUrl,
    path: 'mountains.png',
    directory: Directory.Cache,
  });
  return path;
};

获取下载 URL

获取文件的下载 URL, 例如要显示或共享它 :

import { FirebaseStorage } from '@capacitor-firebase/storage';

const getDownloadUrl = async () => {
  const { downloadUrl } = await FirebaseStorage.getDownloadUrl({
    path: 'images/mountains.png',
  });
  return downloadUrl;
};

在目录中列出文件

在目录中列出文件 。 使用 maxResults 财务报告和审定财务报表 pageToken 通过大目录粘接的选项 :

import { FirebaseStorage } from '@capacitor-firebase/storage';

const listFiles = async () => {
  const { items } = await FirebaseStorage.listFiles({
    path: 'images',
  });
  return items;
};

读取和更新文件元数据

读取文件的元数据, 如大小、 内容类型和时间戳, 或更新文件, 包括用户定义的自定义元数据 :

import { FirebaseStorage } from '@capacitor-firebase/storage';

const getMetadata = async () => {
  const result = await FirebaseStorage.getMetadata({
    path: 'images/mountains.png',
  });
  return result;
};

const updateMetadata = async () => {
  await FirebaseStorage.updateMetadata({
    path: 'images/mountains.png',
    metadata: {
      contentType: 'image/png',
      customMetadata: {
        foo: 'bar',
      },
    },
  });
};

删除文件

删除 Cloud 存储中的文件 :

import { FirebaseStorage } from '@capacitor-firebase/storage';

const deleteFile = async () => {
  await FirebaseStorage.deleteFile({
    path: 'images/mountains.png',
  });
};

使用云存储模拟器

开发期间,您可以将您的应用程序装配到本地的"云存储"模拟器上. 当使用Android模拟器设备时, 10.0.2.2 是连接到 localhost 的计算机。 请注意,在Android上,必须允许明确文本的流量,而该流量并非用于生产:

import { FirebaseStorage } from '@capacitor-firebase/storage';

const useEmulator = async () => {
  await FirebaseStorage.useEmulator({
    host: '10.0.2.2',
    port: 9001,
  });
};

API 密码

删除文件(...)

deleteFile(options: DeleteFileOptions) => Promise<void>

删除文件 .

参数类型
optionsDeleteFileOptions

自: 5.3.0 (中文(简体) )


获得下载Url(...)

getDownloadUrl(options: GetDownloadUrlOptions) => Promise<GetDownloadUrlResult>

获取下载 URL 文件 .

参数类型
optionsGetDownloadUrlOptions

回返情况: Promise<GetDownloadUrlResult>

自: 5.3.0 (中文(简体) )


获取气象数据(...)

getMetadata(options: GetMetadataOptions) => Promise<GetMetadataResult>

获取文件的元数据 .

参数类型
optionsGetMetadataOptions

回返情况: Promise<GetMetadataResult>

自: 5.3.0 (中文(简体) )


列表 Files (...)

listFiles(options: ListFilesOptions) => Promise<ListFilesResult>

在目录中列出文件 .

参数类型
optionsListFilesOptions

回返情况: Promise<ListFilesResult>

自: 5.3.0 (中文(简体) )


更新Metadata (...)

updateMetadata(options: UpdateMetadataOptions) => Promise<void>

更新一个文件的元数据 .

参数类型
optionsUpdateMetadataOptions

自: 5.3.0 (中文(简体) )


下载文件(...)

downloadFile(options: DownloadFileOptions, callback: DownloadFileCallback) => Promise<CallbackId>

下载文件 .

打开 机器人 财务报告和审定财务报表 iOS系统,文件下载到本地文件系统 使用 uri 选项.

打开 网页,文件被下载为 Blob 并返回到 调用事件 .

参数类型
optionsDownloadFileOptions
callbackDownloadFileCallback

回返情况: Promise<string>

自: 8.2.0 (中文(简体) )


上传文件(...)

uploadFile(options: UploadFileOptions, callback: UploadFileCallback) => Promise<CallbackId>

上传文件 .

参数类型
optionsUploadFileOptions
callbackUploadFileCallback

回返情况: Promise<string>

自: 5.3.0 (中文(简体) )


使用计算器(...)

useEmulator(options: UseEmulatorOptions) => Promise<void>

您的应用程序可以和云存储模拟器交谈.

在Android上,必须允许明确文本的流量. 关于电容配置 :

{
  server: {
    cleartext: true
  }
}

明确文本流量并非用于生产.

参数类型
optionsUseEmulatorOptions

自: 6.1.0 (中文(简体) )


接口

删除文件选项

Prop类型说明自兹
pathstring要删除的文件的完整路径, 包括文件名 .5.3.0 (中文(简体) )

获取下载Url Result

Prop类型说明自兹
downloadUrlstring文件下载url.5.3.0 (中文(简体) )

获取下载

Prop类型说明自兹
pathstring获取下载url的完整文件路径,包括文件名.5.3.0 (中文(简体) )

获取元数据结果

Prop类型说明自兹
bucketstring此文件包含的桶.5.3.0 (中文(简体) )
createdAtnumber文件创建时间戳自纪元后为毫秒.5.3.0 (中文(简体) )
generationstring物之相传.5.3.0 (中文(简体) )
md5Hashstring文件的md5散列.5.3.0 (中文(简体) )
metadataGenerationstring对象元数据生成.5.3.0 (中文(简体) )
namestring此文件的短名, 是完整路径的最后一个组件 .5.3.0 (中文(简体) )
pathstring文件的完整路径,包括文件名.5.3.0 (中文(简体) )
sizenumber以字节表示的文件大小 .5.3.0 (中文(简体) )
updatedAtnumber文件自纪元以来最后一次以毫秒更新的时间戳 .5.3.0 (中文(简体) )
cacheControlstring担任 Cache-Control 对象下载时的标题 .6.1.0 (中文(简体) )
contentDispositionstring担任 Content-Disposition 对象下载时的标题 .6.1.0 (中文(简体) )
contentEncodingstring担任 Content-Encoding 对象下载时的标题 .6.1.0 (中文(简体) )
contentLanguagestring担任 Content-Language 对象下载时的标题 .6.1.0 (中文(简体) )
contentTypestring担任 Content-Type 对象下载时的标题 .6.1.0 (中文(简体) )
customMetadata{ [key: string]: string; }额外的用户定义自定义元数据 .6.1.0 (中文(简体) )

获取气象数据选项

Prop类型说明自兹
pathstring获取元数据的完整文件路径,包括文件名.5.3.0 (中文(简体) )

列表文件夹

Prop类型说明自兹
itemsStorageReference[]目录中的文件列表 .5.3.0 (中文(简体) )
nextPageTokenstring如果设定了,此列表可能会有更多的结果. 使用此符号恢复列表 .5.3.0 (中文(简体) )

存储参考

Prop类型说明自兹
bucketstring此文件包含的桶.5.3.0 (中文(简体) )
pathstring文件的完整路径,包括文件名.5.3.0 (中文(简体) )
namestring此文件的短名, 是完整路径的最后一个组件 .5.3.0 (中文(简体) )

列表文件选项

Prop类型说明默认自兹
pathstring列出文件的目录的完整路径 .5.3.0 (中文(简体) )
maxResultsnumber要返回的最大结果数 .10005.3.0 (中文(简体) )
pageTokenstring页面符号,通过先前调用此方法返回 。 如果提供,则从原职位恢复列名.5.3.0 (中文(简体) )

更新元数据选项

Prop类型说明自兹
pathstring用于更新元数据的完整文件路径,包括文件名.5.3.0 (中文(简体) )
metadataSettableMetadata要更新的元数据.5.3.0 (中文(简体) )

设置元数据

Prop类型说明自兹
cacheControlstring担任 Cache-Control 对象下载时的标题 .5.3.0 (中文(简体) )
contentDispositionstring担任 Content-Disposition 对象下载时的标题 .5.3.0 (中文(简体) )
contentEncodingstring担任 Content-Encoding 对象下载时的标题 .5.3.0 (中文(简体) )
contentLanguagestring担任 Content-Language 对象下载时的标题 .5.3.0 (中文(简体) )
contentTypestring担任 Content-Type 对象下载时的标题 .5.3.0 (中文(简体) )
customMetadata{ [key: string]: string; }额外的用户定义自定义元数据 .5.3.0 (中文(简体) )

下载文件选项

Prop类型说明自兹
pathstring要下载的文件的完整路径, 包括文件名 .8.2.0 (中文(简体) )
uristring将文件下载到的uri 。 仅供Android和iOS使用.8.2.0 (中文(简体) )

下载文件CallbackEvent

Prop类型说明自兹
progressnumber下载进度,在0到1之间的百分比.8.2.0 (中文(简体) )
bytesTransferrednumber已转移的字节数 。 仅供Android和Web使用.8.2.0 (中文(简体) )
totalBytesnumber要转移的字节总数 。 仅供Android和Web使用.8.2.0 (中文(简体) )
completedboolean下载是否完成 .8.2.0 (中文(简体) )
blobBlob下载文件为 Blob 。 仅供Web使用.8.2.0 (中文(简体) )

上传文件选项

Prop类型说明自兹
blobBlob要上传的数据 。 仅供Web使用.5.3.0 (中文(简体) )
pathstring应当上传数据的完整路径,包括文件名.5.3.0 (中文(简体) )
uristring要上传的 UR 到文件 。 仅供Android和iOS使用.5.3.0 (中文(简体) )
metadataUploadMetadata要设置文件的元数据 .5.4.0 (单位:千美元)

上传元数据

Prop类型说明自兹
md5Hashstring文件的基础64-编码为MD5散列. 仅供Web使用.5.4.0 (单位:千美元)

上传文件CallbackEvent

Prop类型说明自兹
progressnumber上传进度,在0到1之间的百分比.5.3.0 (中文(简体) )
bytesTransferrednumber已转移的字节数 。 仅供Android和Web使用.5.3.0 (中文(简体) )
totalBytesnumber要转移的字节总数 。 仅供Android和Web使用.5.3.0 (中文(简体) )
completedboolean上传是否完成 .5.3.0 (中文(简体) )

使用编辑器选项

Prop类型说明默认自兹
hoststring模拟器主机没有任何端口或方案. 使用Android模拟器设备时注意: 10.0.2.2是连接主机计算机"localhost"的特殊IP地址.6.1.0 (中文(简体) )
portnumber模拟器端口 .91996.1.0 (中文(简体) )

类型异名

下载回调文件

(event: DownloadFileCallbackEvent | null, error: any): void

调用文件夹

string

上传FileCallback

(event: UploadFileCallbackEvent | null, error: any): void

财务问题

我如何追踪上传或下载的进展?

这个 uploadFile(...) 财务报告和审定财务报表 downloadFile(...) 方法接受一个以包含 progress 作为0至1和a之间的分数 completed 旗帜。 这个 bytesTransferred 财务报告和审定财务报表 totalBytes 属性仅在Android和Web上可用.

不同平台对文件的下载有何不同?

在Android和iOS上,文件被下载到本地文件系统,使用 uri 选项。 在 Web 上, 下载的文件被返回为 Blob 在召回活动中。 或者,您可以用 getDownloadUrl(...) 并使用 Capacitor 文件系统插件下载文件,如 使用示例 见上文.

我该如何上传用户选择的文件 ?

在Android和iOS上,通过 uri 打开 uploadFile(...) 方法。 在网络上,通过数据作为 Blob 使用 blob 选项。 你可以用这个 文件拾取器 让用户在设备上选择文件的插件.

我如何存储关于文件的额外信息?

您可以在上传文件时为它设置元数据 metadata 选项或稍后更新 updateMetadata(...),包括通过 customMetadata启用 getMetadata(...) 以读取文件的元数据,例如其大小、内容类型和时间戳.

我能测试一下云存储模拟器吗?

是的,用那个 useEmulator(...) 将您的应用程序装配到本地 Cloud 存储模拟器上的方法, 如 使用示例 页:1 在Android模拟器设备上测试时,请使用 10.0.2.2 作为到达 localhost 的计算机。 记住,在Android上,必须允许清晰文本的流量,这并非用于生产.

通讯

随时更新有关卡帕韦索姆、Capacitor和Ionic生态系统的最新消息和最新消息,因为我们 《卡帕索克通讯》。 。 。 .

更改日志

见 变动情况。 。 。 .

许可证

见 自由主义。 。 。 .

[^1]: 这个项目不附属于Google LLC或其任何子公司或子公司,也不获得其认可、支持、赞助或批准.

版本与发布记录

@capacitor-firebase/storage 共发布 31 个版本,首次发布于 2023/10/15;过去 12 个月发布了 13 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
8.6.0latest2026/10/319 天前
8.5.22026/09/171 个月前
8.5.12026/09/022 个月前
8.5.02026/08/312 个月前
8.4.02026/08/122 个月前
8.3.02026/06/045 个月前

其他发布通道:dev → 7.0.0-dev.1765887457。

关于 @capacitor-firebase/storage 的常见问题

@capacitor-firebase/storage 是什么?

在Android,iOS,和Web上用于Firebase云存储的电容插件.

如何安装 @capacitor-firebase/storage?

在项目目录运行 npm install @capacitor-firebase/storage,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@capacitor/core(>=8.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@capacitor-firebase/storage 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@capacitor-firebase/storage 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@capacitor-firebase/storage 可以商用吗?

@capacitor-firebase/storage 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@capacitor-firebase/storage 的下载量有多少?

根据 npm 官方下载统计,@capacitor-firebase/storage 在 2026/10/09 – 2026/11/07 这 30 天内被下载 10,931 次,日均约 364 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@capacitor-firebase/storage 还在维护吗?

最新版本 8.6.0 发布于 2026/10/31(9 天前);至今共发布 31 个版本,其中过去 12 个月发布了 13 个;首次发布于 2023/10/15。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。