/** * 离线优先架构的本地文件系统工具类 * 用于将临时抓拍图片持久化到设备存储中,以及同步后的清理 */ // 将临时文件保存到本地 _doc/images/ 目录下 export const saveImageToLocal = (tempFilePath) => { return new Promise((resolve, reject) => { // 只有 App-Plus 环境支持 plus.io // #ifdef APP-PLUS const fileName = `face_${Date.now()}_${Math.floor(Math.random() * 1000)}.jpg`; plus.io.resolveLocalFileSystemURL(tempFilePath, (entry) => { plus.io.resolveLocalFileSystemURL('_doc/', (docEntry) => { // 创建或打开 images 目录 docEntry.getDirectory('images', { create: true }, (dirEntry) => { entry.moveTo(dirEntry, fileName, (newFile) => { resolve(newFile.fullPath); }, (err) => { console.error('[FS] 移动文件失败:', err); reject(err); }); }, (err) => { console.error('[FS] 创建目录失败:', err); reject(err); }); }, (err) => { console.error('[FS] 访问_doc目录失败:', err); reject(err); }); }, (err) => { console.error('[FS] 访问临时文件失败:', err); reject(err); }); // #endif // #ifndef APP-PLUS // 浏览器等其他环境直接返回临时路径用于模拟 resolve(tempFilePath); // #endif }); }; // 删除指定的本地文件 export const deleteLocalImage = (localPath) => { return new Promise((resolve, reject) => { // #ifdef APP-PLUS if (!localPath || !localPath.includes('_doc/')) { resolve(); return; } plus.io.resolveLocalFileSystemURL(localPath, (entry) => { entry.remove(() => { console.log('[FS] 成功删除本地文件:', localPath); resolve(); }, (err) => { console.error('[FS] 删除文件失败:', err); reject(err); }); }, (err) => { console.error('[FS] 未找到需删除的文件:', err); resolve(); // 找不到就算了,不阻塞流程 }); // #endif // #ifndef APP-PLUS resolve(); // #endif }); };