SuperNode
基础

photo

将图片保存到 Android 系统图库。

photo.save

photo.save(options): Promise<void> 将一张图片保存到 Pictures/SuperNode。写入并发布完成后 resolve。支持普通项目和小组件任务,执行受宿主进程和任务生命周期约束。Android 10+ 添加应用自己的媒体使用 MediaStore,直接保存,无需图库读取权限。

参数类型说明
urlstring | URLHTTP(S) 图片地址。
headersReadonly<Record<string, string>>URL 请求的可选请求头。
dataBlob | ArrayBuffer | ArrayBufferView图片字节,包含 File 和 Node.js Buffer。
filenamestring可选文件名,规范化为单个文件名。

url、data 必须二选一;headers 用于 URL 请求。SDK 导出 PhotoSaveOptions 联合类型。空数据、非法 URL、请求头、文件名和无效图片会报错。

保存 URL

import { photo } from "supernode";

await photo.save({
  url: "https://example.com/photo.png",
  filename: "photo.png",
});

请求头与下载

通过 headers 传入认证信息。下载使用流式 GET,最多跟随 10 次重定向;跨源重定向移除 Authorization、Cookie、Proxy-Authorization。请求使用显式请求头,独立于 Android 应用的 Cookie 和缓存。每次网络读取的空闲超时为 30 秒。

import { photo } from "supernode";

await photo.save({
  url: "https://example.com/private/photo.jpg",
  headers: { Authorization: "Bearer YOUR_TOKEN" },
});

保存字节

import { readFile } from "node:fs/promises";
import { photo } from "supernode";

await photo.save({ data: await readFile("images/result.png"), filename: "result.png" });

文件名依次取显式 filename、File.name、最终 URL 文件名、生成名称。Android 根据图片内容校验格式和 MIME,保存原始字节。

大图片与错误

数据通过独立 RPC 连接按最多 512 KiB 分块、逐块确认,Android 增量写入临时文件。URL 图片采用流式下载;内存字节源会创建 Blob 快照。总大小受可用存储和任务生命周期约束。失败、断连时清理传输文件和待发布记录;应用下次启动时回收遗留任务。

使用 try/catch 处理失败。错误前缀包括 PHOTO_PERMISSION_DENIED、PHOTO_DOWNLOAD_FAILED、PHOTO_TRANSFER_FAILED、PHOTO_INVALID_IMAGE 和 PHOTO_SAVE_FAILED。SDK 参数错误抛出 TypeError。

import { photo } from "supernode";

try {
  await photo.save({ url: "https://example.com/photo.png" });
} catch (error) {
  console.error(error);
}

本页目录