BioforestChain / dweb_browser

BioforestChain Infrastructure
https://docs.dweb-browser.org
MIT License
11 stars 4 forks source link

【提案】 🎉 media.sys.dweb #91

Closed waterbang closed 6 months ago

waterbang commented 6 months ago
  1. 保存图片到相册
    
    savePictures(options: FilesOption): Promise<FilesResult>

export interface FilesOption { files?: FileList; // 保存图片数组 file?:File; // 保存单张 saveLocation?:string // 保存的相册名称(android only) }

export interface FilesResult { success:string, message:string }

Gaubee commented 6 months ago

建议写出 url 风格的接口设计

waterbang commented 6 months ago
POST /media.sys.dweb/savePictures

这个 POST 请求接收 files, file, 和 saveLocation 作为请求的 body,返回的结果是 FilesResult

请求体(RequestBody)可以是:

{
  "files": [FileList],
  "file": File,
  "saveLocation": "bfs"
}

响应体(ResponseBody):

{
  "success": "true",
  "message": "The files have been successfully saved."
}
Gaubee commented 6 months ago
  1. 这里的file目前不支持数组
  2. file 和 share 接口类似,需要包含 web-file-api 所提供的一些字段,哪怕这些字段用不上
    1. name
    2. size
    3. type
    4. data: Uint8Array
  3. 返回内容要尽可能克制,不要包含过多信息,其中200的statusCode和statusText已经包含了足够的信息。建议返回Empty
waterbang commented 6 months ago

是的 目前抽离了share的公共类型。但是用户传递还是传递web的File对象,以下的FileData是根据File构造出来的。

export interface FileData {
  name: string;
  type: string;
  size: number;
  encode: FileDataEncode;
  data: string;
}

export enum FileDataEncode {
  UTF8 = "utf8",
  BASE64 = "base64"
}

返回值修改为empty

Gaubee commented 6 months ago

这里 encode 改成 encoding,并且增加一种:BINARY = 'binary',cbor支持后面这种格式。 否则从File对象读取出来的数据,通常使用 base64,从而避免编码错乱。

通常只有开发者自己调用API时,会通过接口直接使用 utf-8 编码。而这也通常只会用在svg格式上。