imgCache.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import md5 from "./md5.min.js";
  2. import downLoadQueue from './download.js';
  3. /**
  4. * 图片缓存操作类
  5. */
  6. export class ImgCache {
  7. /**
  8. * 设置图片缓存
  9. * @param {String} imgUrl 网络图片地址
  10. */
  11. static async setCache(imgUrl) {
  12. // 创建图片下载任务
  13. let task = {
  14. // 图片路径
  15. filePath: ImgCache.createFilePath(imgUrl),
  16. url: imgUrl
  17. }
  18. // 添加图片下载任务
  19. downLoadQueue.add(task);
  20. }
  21. /**
  22. * 获取图片缓存
  23. * @param {String} imgUrl 网络图片地址
  24. */
  25. static getCache(imgUrl) {
  26. // 创建文件key值
  27. let filePath = ImgCache.createFilePath(imgUrl);
  28. return ImgCache.isExistFile(filePath);
  29. }
  30. /**
  31. * 拼接图片文件缓存路径
  32. * @param {String} imgUrl 网络图片地址
  33. */
  34. static createFilePath(imgUrl) {
  35. let fileName = md5(imgUrl);
  36. // #ifdef MP-WEIXIN
  37. return `${wx.env.USER_DATA_PATH}/${fileName}`;
  38. // #endif
  39. // #ifdef APP-PLUS
  40. return `_doc/imgCache/${fileName}`;
  41. // #endif
  42. }
  43. /**
  44. * 根据文件路径判断文件是否存在
  45. * @param {String} filePath 文件路径
  46. */
  47. static isExistFile(filePath) {
  48. return new Promise(resolve => {
  49. // #ifdef APP-PLUS
  50. plus.io.resolveLocalFileSystemURL(filePath, () => resolve(filePath), () => resolve(null));
  51. // #endif
  52. // #ifdef MP-WEIXIN
  53. uni.getFileSystemManager().readFile({
  54. filePath: filePath,
  55. success: (res) => {
  56. resolve(filePath)
  57. },
  58. fail: (res) => {
  59. resolve(null)
  60. }
  61. })
  62. // #endif
  63. })
  64. }
  65. }