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

fix:提交

上级 9130d61f
...@@ -134,7 +134,9 @@ export default { ...@@ -134,7 +134,9 @@ export default {
deleteAllFilesInDirectory(targetPath).then(() => { deleteAllFilesInDirectory(targetPath).then(() => {
// 复制 // 复制
copyImagesToFolder(imagePaths, targetPath).then((res) => { copyImagesToFolder(imagePaths, targetPath).then((res) => {
console.log("图片复制后", res); uni.navigateTo({
url: "/pages/listingManagement/index?backValue=home",
})
}); });
}); });
}, },
...@@ -194,10 +196,10 @@ export default { ...@@ -194,10 +196,10 @@ export default {
this.updateSysTime(); this.updateSysTime();
// this.getDetails(); // this.getDetails();
}, },
2 * 1000, 2 * 1000
uni.navigateTo({ // uni.navigateTo({
url: "/pages/listingManagement/index?backValue=home", // url: "/pages/listingManagement/index?backValue=home",
}) // })
); );
// }) // })
// .catch((error) => { // .catch((error) => {
......
...@@ -348,151 +348,121 @@ export function copyDirectory(sourceDirectoryPath, targetDirectoryPath) { ...@@ -348,151 +348,121 @@ export function copyDirectory(sourceDirectoryPath, targetDirectoryPath) {
); );
}); });
} }
// 复制多张图片到指定目录的函数(带权限请求) // 复制多张图片到指定目录的函数(带权限请求)
export function copyImagesToFolder(sourcePaths, targetDir) { export function copyImagesToFolder(sourcePaths, targetDir) {
// 第一步:检查运行环境是否支持plus API return new Promise((resolve, reject) => {
if (!window.plus || !plus.io) { // 1. 环境检查
console.error("[文件操作] 当前环境不支持plus API"); // if (!window.plus || !plus.io) {
return Promise.reject(new Error("当前环境不支持plus API")); // const err = new Error("当前环境不支持plus API");
} // console.error(err);
// reject(err);
// return;
// }
console.log("[文件操作] 开始复制文件:", sourcePaths, "->", targetDir); console.log("开始复制文件...");
// 返回Promise以便调用者可以await或then/catch // 2. 权限请求
return new Promise((resolve, reject) => {
// 第二步:检查并请求权限
requestFilePermission() requestFilePermission()
.then(() => { .then(() => {
// 权限已授予,准备目标目录 console.log("权限已获取,准备目录...");
prepareTargetDirectory( return prepareTargetDirectory(targetDir);
targetDir,
(dirEntry) => {
// 目标目录准备好后,开始复制所有文件
const copyPromises = sourcePaths.map((sourcePath) => {
return copySingleImage(sourcePath, dirEntry);
});
// 等待所有复制操作完成
Promise.all(copyPromises)
.then((results) => {
console.log("[文件操作] 所有文件复制完成");
resolve(results);
}) })
.catch((error) => { .then(dirEntry => {
console.error("[文件操作] 部分文件复制失败:", error); console.log("目录准备完成,开始复制...");
reject(error); const copies = sourcePaths.map(path => copySingleFile(path, dirEntry));
}); return Promise.all(copies);
},
(error) => {
console.error("[文件操作] 准备目标目录失败:", error.message);
reject(error);
}
);
}) })
.catch((error) => { .then(results => {
console.error("[文件操作] 权限请求失败:", error.message); console.log("所有文件复制成功", results);
reject(error); resolve(results);
})
.catch(err => {
console.error("复制过程出错:", err);
reject(err);
}); });
}); });
} }
// 请求文件系统权限 // 请求权限(返回Promise)
function requestFilePermission() { function requestFilePermission() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
// 检查是否已有权限 if (plus.os.name === 'iOS') {
resolve(); // iOS可能不需要显式请求
return;
}
plus.android.requestPermissions( plus.android.requestPermissions(
[ [
"android.permission.READ_EXTERNAL_STORAGE", "android.permission.READ_EXTERNAL_STORAGE",
"android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE"
], ],
function (result) { function(result) {
// 检查权限是否被授予 if (Object.values(result.granted).every(Boolean)) {
const granted = Object.values(result.granted).every(Boolean);
if (granted) {
console.log("[文件操作] 文件权限已授予");
resolve(); resolve();
} else { } else {
console.error("[文件操作] 文件权限被拒绝"); reject(new Error("用户拒绝了文件权限"));
reject(new Error("用户拒绝了文件访问权限"));
} }
}, },
function (error) { function(error) {
console.error("[文件操作] 权限请求错误:", error);
reject(error); reject(error);
} }
); );
}); });
} }
// 准备目标目录 // 准备目录(返回Promise)
function prepareTargetDirectory(targetDir, successCallback, errorCallback) { function prepareTargetDirectory(targetDir) {
return new Promise((resolve, reject) => {
plus.io.resolveLocalFileSystemURL( plus.io.resolveLocalFileSystemURL(
targetDir, targetDir,
function (dirEntry) { function(dirEntry) {
// 目标目录已存在 resolve(dirEntry); // 目录已存在
console.log("[文件操作] 目标目录已存在");
successCallback(dirEntry);
}, },
function (e) { function() {
// 目标目录不存在,尝试创建 // 目录不存在则创建
console.log("[文件操作] 目标目录不存在,尝试创建..."); plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS,
plus.io.requestFileSystem( function(fs) {
plus.io.PUBLIC_DOCUMENTS,
function (fs) {
// 创建目录
fs.root.getDirectory( fs.root.getDirectory(
targetDir, targetDir,
{ { create: true },
create: true, function(dirEntry) {
}, resolve(dirEntry);
function (dirEntry) {
console.log("[文件操作] 目标目录创建成功");
successCallback(dirEntry);
}, },
function (error) { function(error) {
errorCallback(error); reject(error);
} }
); );
}, },
function (error) { function(error) {
errorCallback(error); reject(error);
} }
); );
} }
); );
});
} }
// 复制单个图片(返回Promise) // 复制单个文件(返回Promise)
function copySingleImage(sourcePath, targetDirEntry) { function copySingleFile(sourcePath, targetDirEntry) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
plus.io.resolveLocalFileSystemURL( plus.io.resolveLocalFileSystemURL(
sourcePath, sourcePath,
function (entry) { function(entry) {
// 源文件存在,开始复制 const fileName = sourcePath.split('/').pop();
console.log("[文件操作] 源文件存在:", sourcePath);
// 获取文件名
const fileName = sourcePath.substring(sourcePath.lastIndexOf("/") + 1);
console.log("[文件操作] 文件名:", fileName);
// 执行复制操作
entry.copyTo( entry.copyTo(
targetDirEntry, targetDirEntry,
fileName, fileName,
function (newEntry) { function(newEntry) {
console.log("[文件操作] 文件复制成功,新路径:", newEntry.fullPath); resolve(newEntry.toURL());
resolve(newEntry.fullPath);
}, },
function (error) { function(error) {
console.error("[文件操作] 文件复制失败:", error.message);
reject(error); reject(error);
} }
); );
}, },
function (e) { function(error) {
// 源文件不存在或无法访问 reject(error);
console.error("[文件操作] 源文件不存在或无法访问:", e.message);
reject(e);
} }
); );
}); });
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论