提交 e8751ec2 authored 作者: JaxBBLL's avatar JaxBBLL

fix

上级 6d643a3c
/**
* 传入inspectionData, 找出所有的照片url
* @param {*} obj
* @returns
*/
export function findPhotosUrls(obj) {
let urls = [];
function recurse(current) {
if (Array.isArray(current)) {
current.forEach(recurse);
} else if (current && typeof current === "object") {
Object.keys(current).forEach((key) => {
if (key === "photos" && Array.isArray(current[key])) {
current[key].forEach((url) => {
if (typeof url === "string") {
urls.push(url.trim());
}
});
} else {
recurse(current[key]);
}
});
}
}
recurse(obj);
return urls;
}
......@@ -40,6 +40,58 @@ export async function createFolder(relativePath) {
}
}
/**
* 删除指定目录及其内容
* @param {string} folderPath 要删除的目录路径(相对于 PUBLIC_DOCUMENTS 根目录)
* @returns {Promise<void>} 返回一个 Promise,在删除成功或不存在时 resolve,失败时 reject
*/
export function deleteFolder(folderPath) {
return new Promise((resolve, reject) => {
// 获取文件系统对象
plus.io.requestFileSystem(
plus.io.PUBLIC_DOCUMENTS,
(fs) => {
// 构造完整路径
const fullPath = fs.root.fullPath + "/" + folderPath;
// 检查目录是否存在
plus.io.resolveLocalFileSystemURL(
fullPath,
(dirEntry) => {
console.log(`目录存在,开始删除:${fullPath}`);
deleteDirectoryRecursive(dirEntry)
.then(() => {
console.log(`目录已删除:${fullPath}`);
resolve();
})
.catch((err) => {
console.error(
`删除目录失败:${fullPath}, 错误信息:${err.message}`
);
reject(err);
});
},
(err) => {
if (err.code === 1) {
console.log(`目录不存在:${fullPath}`);
resolve(); // 目录不存在时直接 resolve
} else {
console.error(
`检查目录失败:${fullPath}, 错误信息:${err.message}`
);
reject(err);
}
}
);
},
(err) => {
console.error(`请求文件系统失败:${err.message}`);
reject(err);
}
);
});
}
/**
* 复制相册图片
* @param {*} sourcePath
......@@ -105,3 +157,39 @@ export async function copyImage(sourcePath, targetPath) {
throw new Error(`操作失败: ${error.message}`);
}
}
/**
* 传入照片数组,复制到临时目录
* @param {*} photos ["1.jpg", "2.jpg"]
* @returns
*/
export async function copyPhotosToTemp(photos) {
await deleteFolder("data/temp"); // 删除临时目录
await createFolder("data/temp"); // 创建临时目录
console.log("1111");
return new Promise((resolve, reject) => {
const copiedPhotos = [];
let completed = 0;
photos.forEach((photo) => {
const targetPath = `_documents/data/temp`;
console.log("before copy", photo, targetPath);
copyImage(photo, targetPath)
.then((copiedUrl) => {
console.log("copiedUrl", copiedUrl);
copiedPhotos.push(photo);
completed += 1;
if (completed === photos.length) {
resolve(copiedPhotos);
}
})
.catch((error) => {
console.error(`复制照片失败: ${error.message}`);
reject(error);
});
});
});
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论