BioforestChain / dweb_browser

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

【提案】🎉 download.browser.dweb #41

Open Gaubee opened 9 months ago

Gaubee commented 9 months ago
  1. [ ] 实现下载管理页面 DownloadController.Render
  2. [ ] 每一个下载项目至少包括以下基本信息:编号、链接、文件名、目标文件夹、下载进度、创建时间、下载来源链接、下载来源模块、下载回调链接、内容类型(mime)
    1. [x] 目标文件夹需要基于下载来源模块来定位,比如如果是 game.xxx.com.dweb 这样的 jmm 程序,它的文件夹是独立隔离的,所以相对应的,目标文件夹需要基于对应的模块进行翻译,所以这里需要 file.sys.dweb 模块的介入?需要统一出一种文件寻址方式,其背后的基本理念是所有的模块都可能来自网络。
    2. [ ] 下载链接来源能确保我们可以回到对应的页面,比如 jmm 模块的下载,能够回到 jmm 的详情页
  3. [x] 下载接口包括
    1. [x] /create 创建
    2. [x] /start 开始/恢复
    3. [x] /pause 暂停
    4. [x] /cancel 取消下载(释放句柄),记录还在,可以恢复
    5. [x] /watch/progress 进度监控
  4. [ ] 下载后的文件需要打开,那么就需要各个模块提供支持的 mime

    后缀很容易冲突,因此提供 mime 是更好的选择,如果么没有 mime,downloadnmm 还会自动根据后缀补充 mime 也可以强制选择打开方式,罗列出能过打开 mime 的模块 该功能通过 deeplink 来实现:dweb://open/${mime}?path=${path},这里 mime 使用前缀匹配,比如 image/png的类型可以被 dweb://open/image?path=${path}的模块给处理

waterbang commented 9 months ago

current download task

data class DownloadTask(
  /** 下载编号 */
  val id: String,
  /** 下载链接 */
  val url: String,
  /** 文件路径 */
  val filepath: String,
  /** 创建时间 */
  val createTime: Long,
  /** 来源模块 */
  val originMmid: MMID,
  /** 来源链接 */
  val originUrl: String?,
  /** 下载回调链接 */
  val completeCallbackUrl: String?,
  /** 文件的元数据类型,可以用来做“打开文件”时的参考类型 */
  val mime: String,
) {
  /** 标记当前下载状态 */
  var status = DownloadProgressEvent(),
}
jackie-yellow commented 5 months ago

@Gaubee download模块目前存储文件的路径是在jmm.browser.dweb下,但是Dweb Browser Apk升级时,下载的apk是不能放在data/data/packagename 里面,不然无法执行安装操作。 目前考虑两个方案:

  1. download模块保存文件的路径修改为可以靠传参的方式指定,不一定强制放在 jmm.browser.dweb 目录。
  2. 在desk.browser.dweb 增加 download的protcol,这边做下载路径的调整,但是会有一套重复的下载实现代码。
  3. download完成后,通过file.std.dweb 拷贝到 外部的 Download 目录?