| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- /**
- * 储存文件到指定的地址:把一个文件移动到另外一个位置 剪切文件 重命名文件
- * @param {String} url 新的地址 _doc/ 开头
- * @param {String} file 原文件地址
- * @param {String} newfilename 新的文件名
- */
- async function saveFile(url, file, newfilename) {
- await creatDirs(url)
- let isokm = moveDirectyOrFile(file, url + "/", newfilename);
- return isokm
- }
- /**
- * 储存文件到指定的地址:把一个文件复制到另外一个位置 复制文件 重命名文件
- * @param {String} url 新的地址 _doc/ 开头
- * @param {String} file 原文件地址
- * @param {String} newfilename 新的文件名
- */
- async function saveFileV2(url, file, dirName , newfilename) {
- await creatDirs(url)
- let isokm = copyFileTo(file, url, dirName , newfilename);
- return isokm
- }
- //循环创建目录 url:"_doc/...." _doc开头
- async function creatDirs(url) {
- let urllist = url.split("/");
- //创建文件夹
- let u = "";
- for (let i = 0; i < urllist.length - 1; i++) {
- let j = i;
- if (i == 0) {
- u = urllist[i];
- } else {
- u = u + "/" + urllist[i];
- }
- // console.log(i + "-------------------")
- // console.log(u)
- // console.log(urllist[j + 1])
- await CreateNewDir(u, urllist[j + 1]);
- }
- }
- //重命名目录或文件名
- function moveDirectyOrFile(srcUrl, dstUrl, newName) { //srcUrl需要移动的目录或文件,dstUrl要移动到的目标目录(父级)
- plus.io.resolveLocalFileSystemURL(srcUrl, function(srcEntry) {
- plus.io.resolveLocalFileSystemURL(dstUrl, function(dstEntry) {
- if (srcEntry.isDirectory) {
- srcEntry.moveTo(dstEntry, newName, function(entry) {
- //console.log("New Path: " + entry.fullPath);
- return true;
- }, function(e) {
- return e;
- //console.log(e.message);
- });
- } else {
- srcEntry.moveTo(dstEntry, newName, function(entry) {
- //console.log("New Path: " + entry.fullPath);
- return true;
- }, function(e) {
- return e;
- //console.log(e.message);
- });
- }
- }, function(e) {
- uni.showToast({
- title: '获取目标目录失败:' + e.message,
- duration: 2000,
- icon: 'none'
- });
- });
- }, function(e) {
- uni.showToast({
- title: '获取目录失败:' + e.message,
- duration: 2000,
- icon: 'none'
- });
- });
- }
- //创建一个新目录
- function CreateNewDir(url, dirName) {
- //url值可支持相对路径URL、本地路径URL
- return new Promise((resolver, reject) => {
- plus.io.resolveLocalFileSystemURL(url, function(entry) {
- entry.getDirectory(dirName, {
- create: true,
- exclusive: false
- }, function(dir) {
- resolver(true)
- }, function(error) {
- reject(error.message)
- uni.showToast({
- title: dirName + '目录创建失败:' + error.message,
- duration: 2000,
- icon: 'none'
- });
- });
- }, function(e) {
- reject(error.message)
- uni.showToast({
- title: '获取目录失败:' + e.message,
- duration: 2000,
- icon: 'none'
- });
- });
- })
- }
- /**
- * 复制文件
- * @param {String} url 文件地址,文件路径,最好是相对路径 url:"_doc/...." _doc开头
- * @param {String} newUrl 目标目录,最好是相对路径 url:"_doc/...." _doc开头
- * @param {String} newName 拷贝后的文件名称,默认为原始文件名称
- */
- function copyFileTo(url, newUrl, dirName, newName) {
- if (url.length >= 7 && "file://" == url.substring(0, 7)) {
- url = url.substring(7)
- }
- let tempUrl = url.substring(0, url.lastIndexOf('/'));
- let addUrl = newUrl + '/' + dirName;
- console.log(addUrl);
- if (addUrl == tempUrl) {
- return url;
- }
- return new Promise((resolve, reject) => {
- plus.io.resolveLocalFileSystemURL(url, async (entry) => {
- if (entry.isFile) {
- let c = await CreateNewDir(newUrl, dirName);
- let u = await getDirsys(addUrl)
- entry.copyTo(u, newName, en => {
- resolve(en.fullPath);
- }, e => {
- reject('错误:复制时出现错误')
- uni.showModal({
- title: "错误",
- content: "复制时出现错误"
- })
- })
- } else {
- reject('错误:路径必须是文件')
- uni.showModal({
- title: "错误",
- content: "路径必须是文件"
- })
- }
- }, (e) => {
- console.log(e);
- reject(e)
- uni.showModal({
- title: "错误",
- content: "打开文件系统时出错"
- })
- });
- })
- }
- //获取目录对象
- function getDirsys(url) {
- return new Promise((resolve, reject) => {
- plus.io.resolveLocalFileSystemURL(url, (entry) => {
- resolve(entry)
- }, (e) => {
- reject(e)
- console.log(e);
- });
- })
- }
- //将这些方法暴露出去
- export {
- saveFile,
- creatDirs,
- moveDirectyOrFile,
- copyFileTo,
- getDirsys,
- saveFileV2,
- CreateNewDir
- };
|