Skip to content

加密资料库本地加解密问题汇总.md

Logan Guo edited this page Jul 5, 2016 · 4 revisions

进度更新功能实现

  1. 上传进度更新
  • 和文件上传一样
  1. 下载进度更新
  • 汇总某个文件的所有块的下载进度并当成一个文件来处理,处理方式是用FileBlocks逐个记录文件某个块的下载进度
  • 更新每个block的total size
fileBlocks.getBlock(blkId).size = req.contentLength();
monitor.onProgressNotify(fileBlocks.getSize(), true);
  • 更新每个block的下载进度
monitor.onProgressNotify(fileBlocks.getFinished(), false);

fileBlocks的getFinished方法

public long getFinished() {
      long finished = 0L;
      for (Block block : blocks) {
          finished += block.finished;
      }
      return finished;
  }
  1. 存在的问题 下载大文件时,比如20MB,进度显示错误

影响到的地方

  1. 本地缓存,虽然仍然是以fileid的方式管理缓存的,但是由于是分块下载,如果不是文件的所有块都下载完,缓存管理就会出现问题。问题是文件已缓存的图标会显示,但是实际上文件并没有被成功缓存。
  2. 文件自动更新
  • 要区分是分块上传还是文件上传
  1. overflow menu中“添加”菜单下的四个子菜单
  • 要区分是分块上传还是文件上传
  1. overflow menu中“编辑”菜单下的四个子菜单
  • 要区分是分块上传还是文件上传
  1. 来自外部的分享

优化

  1. 由于客户端有一个“加密资料库解密方式”菜单项,当客户端切换“数据在本地解密”和“数据在服务器端解密”的选项时,服务器端怎么支持加密文件上传和非加密文件上传的切换的?客户端是否可以正确处理?
  2. 是否可以把加解密的处理重构到DownloadTask或UploadTask中,这样在加密资料库中的文件上传下载也可以当成普通文件来处理了,改动范围小,易于维护