使用文件前,先检查下文件是否正常
This commit is contained in:
parent
ca17eb4844
commit
83195e6cad
@ -1,3 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* LRU 文件存储,使用该 downloader 可以让下载的文件存储在本地,下次进入小程序后可以直接使用
|
||||||
|
* 详细设计文档可查看 https://juejin.im/post/5b42d3ede51d4519277b6ce3
|
||||||
|
*/
|
||||||
const util = require('./util');
|
const util = require('./util');
|
||||||
|
|
||||||
const SAVED_FILES_KEY = 'savedFiles';
|
const SAVED_FILES_KEY = 'savedFiles';
|
||||||
@ -7,11 +11,15 @@ const KEY_TIME = 'time';
|
|||||||
const KEY_SIZE = 'size';
|
const KEY_SIZE = 'size';
|
||||||
|
|
||||||
// 可存储总共为 6M,目前小程序可允许的最大本地存储为 10M
|
// 可存储总共为 6M,目前小程序可允许的最大本地存储为 10M
|
||||||
const MAX_SPACE_IN_B = 6 * 1024 * 1024;
|
let MAX_SPACE_IN_B = 6 * 1024 * 1024;
|
||||||
let savedFiles = {};
|
let savedFiles = {};
|
||||||
|
|
||||||
export default class Dowloader {
|
export default class Dowloader {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
// app 如果设置了最大存储空间,则使用 app 中的
|
||||||
|
if (getApp().PAINTER_MAX_LRU_SPACE) {
|
||||||
|
MAX_SPACE_IN_B = getApp().PAINTER_MAX_LRU_SPACE;
|
||||||
|
}
|
||||||
wx.getStorage({
|
wx.getStorage({
|
||||||
key: SAVED_FILES_KEY,
|
key: SAVED_FILES_KEY,
|
||||||
success: function (res) {
|
success: function (res) {
|
||||||
@ -33,10 +41,36 @@ export default class Dowloader {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const file = getFile(url);
|
const file = getFile(url);
|
||||||
|
|
||||||
if (file) {
|
if (file) {
|
||||||
|
// 检查文件是否正常,不正常需要重新下载
|
||||||
|
wx.getSavedFileInfo({
|
||||||
|
filePath: file[KEY_PATH],
|
||||||
|
success: (res) => {
|
||||||
resolve(file[KEY_PATH]);
|
resolve(file[KEY_PATH]);
|
||||||
return;
|
},
|
||||||
|
fail: (error) => {
|
||||||
|
console.error(`the file is broken, redownload it, ${JSON.stringify(error)}`);
|
||||||
|
downloadFile(url).then((path) => {
|
||||||
|
resolve(path);
|
||||||
|
}, () => {
|
||||||
|
reject();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
downloadFile(url).then((path) => {
|
||||||
|
resolve(path);
|
||||||
|
}, () => {
|
||||||
|
reject();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function downloadFile(url) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
wx.downloadFile({
|
wx.downloadFile({
|
||||||
url: url,
|
url: url,
|
||||||
success: function (res) {
|
success: function (res) {
|
||||||
@ -72,7 +106,6 @@ export default class Dowloader {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
function saveFile(key, newFileSize, tempFilePath) {
|
function saveFile(key, newFileSize, tempFilePath) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user