提交 1a734ad3 authored 作者: caodi\cd's avatar caodi\cd

fix:优化

上级 1e7bb6be
......@@ -106,25 +106,7 @@ export default {
*/
clickHandle() {
if (this.loading) return;
const directoryPath = `${SYNCHRONIZE_DATA_PAD}/发送数据`;
const targetDirectoryPath = `${SYNCHRONIZE_DATA_PAD}/history/listingManagement`;
checkAndCreateDirectory(directoryPath).then(() => {
copyDirectory(directoryPath, targetDirectoryPath)
.then(() => {
return deleteAllFilesInDirectory(directoryPath);
})
.then(() => {
this.coverData();
})
.catch((error) => {
uni.showToast({
title: error,
icon: "none",
duration: 1000,
});
});
});
},
// 保存图片到指定地址
copyImages(imagePaths, userName) {
......
......@@ -360,25 +360,25 @@ export function copyImagesToFolder(sourcePaths, targetDir) {
// return;
// }
console.log("开始复制文件...");
console.log("开始复制图片文件...");
// 2. 权限请求
requestFilePermission()
.then(() => {
console.log("权限已获取,准备目录...");
console.log("权限已获取,准备目标目录...");
return prepareTargetDirectory(targetDir);
})
.then(dirEntry => {
console.log("目录准备完成,开始复制...");
const copies = sourcePaths.map(path => copySingleFile(path, dirEntry));
.then(targetDirEntry => {
console.log("目录准备完成,开始复制图片...");
const copies = sourcePaths.map(path => copySingleImage(path, targetDirEntry));
return Promise.all(copies);
})
.then(results => {
console.log("所有文件复制成功", results);
console.log("所有图片复制成功", results);
resolve(results);
})
.catch(err => {
console.error("复制过程出错:", err);
console.error("复制图片出错:", err);
reject(err);
});
});
......@@ -387,10 +387,10 @@ export function copyImagesToFolder(sourcePaths, targetDir) {
// 请求权限(返回Promise)
function requestFilePermission() {
return new Promise((resolve, reject) => {
if (plus.os.name === 'iOS') {
resolve(); // iOS可能不需要显式请求
return;
}
// if (plus.os.name === 'iOS') {
// resolve(); // iOS可能不需要显式请求
// return;
// }
plus.android.requestPermissions(
[
......@@ -414,18 +414,11 @@ function requestFilePermission() {
// 准备目录(返回Promise)
function prepareTargetDirectory(targetDir) {
return new Promise((resolve, reject) => {
plus.io.resolveLocalFileSystemURL(
targetDir,
function(dirEntry) {
resolve(dirEntry); // 目录已存在
},
function() {
// 目录不存在则创建
plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS,
function(fs) {
fs.root.getDirectory(
targetDir,
{ create: true },
{ create: true, exclusive: false },
function(dirEntry) {
resolve(dirEntry);
},
......@@ -438,19 +431,31 @@ function prepareTargetDirectory(targetDir) {
reject(error);
}
);
}
);
});
}
// 复制单个文件(返回Promise)
function copySingleFile(sourcePath, targetDirEntry) {
// 复制单个图片文件(返回Promise)
function copySingleImage(sourcePath, targetDirEntry) {
return new Promise((resolve, reject) => {
plus.io.resolveLocalFileSystemURL(
sourcePath,
function(entry) {
function(fileEntry) {
if (!fileEntry.isFile) {
reject(new Error("源路径不是文件"));
return;
}
// 获取文件名
const fileName = sourcePath.split('/').pop();
entry.copyTo(
// 检查文件是否已存在
targetDirEntry.getFile(
fileName,
{ create: false },
() => {
// 文件已存在,可以在这里决定是覆盖还是跳过
// 这里选择覆盖
fileEntry.copyTo(
targetDirEntry,
fileName,
function(newEntry) {
......@@ -461,6 +466,21 @@ function copySingleFile(sourcePath, targetDirEntry) {
}
);
},
() => {
// 文件不存在,直接复制
fileEntry.copyTo(
targetDirEntry,
fileName,
function(newEntry) {
resolve(newEntry.toURL());
},
function(error) {
reject(error);
}
);
}
);
},
function(error) {
reject(error);
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论