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

fix:优化

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