各位大神,难道uni-app连文件名修改的api都没有吗?小白无能没有找到,各位大神,帮帮忙。谢谢
- 发布:2021-04-16 12:46
 - 更新:2021-06-17 14:12
 - 阅读:4566
 
uni-app中如何修改文件名?
這是你要的改名:
let entry1,entry2  
//把原文件製成所需對象:  
plus.io.resolveLocalFileSystemURL('/storage/emulated/0/YOUR_PATH/01.mp4',function(res){  
    entry1 = res  
},function(){  
    console.log('fail')  
})  
//把改名後的路徑製成所需對象:   
plus.io.resolveLocalFileSystemURL('/storage/emulated/0/YOUR_PATH/',function(res){  
    entry2 = res  
},function(){  
    console.log('fail')  
})  
//正式改名   
function myMoveTo () {  
    entry1.moveTo(entry2,'02.mp4',function(res2){   //02.mp4為新名  
        console.log(res2)  
    },function (res3){  
        console.log(res3)  
    })  
}  
// 由於製成所需對象的fucntion 是同步的,直接運行myMoveTo() 時, entry1及entry2 仍是空值,這此就用最簡單的settimeout去'讓子彈飛' ,你可以自行改為promise方法  
setTimeout(()=>{  
    myMoveTo()  
},1000)  
                                        再把rename簡化:
其實第二個OBJ只須要 路徑資料(fullPath). 所以手寫了一個試試, 結果真的成功.
在只須做一個對象的情況下,可以如此簡化:
test() {  
    let DirPath = '/storage/emulated/0/YOUT_PATH/'  
    let oldName = '02.mp4'  
    let newName = '01.mp4'  
    plus.io.resolveLocalFileSystemURL(DirPath + oldName, function(targetFileEntry) {  
        targetFileEntry.moveTo({  
            fullPath: DirPath   //自製對象在此  
        }, newName, function(obj) {  
            console.log('成功', obj)  
            for(let i=0; i < Object.keys(obj).length; i  ) {  
                console.log("value "  i   " "   obj[Object.keys(obj)[i]])  
            }  
        }, function(e) {  
            console.log(e)  
        })  
    },function(e){  
        console.log(e)  
    })  
},
不過uniapp真的要吐槽一下targetFileEntry 打印出來是 [object object] 不能被 JSON.parse 或 JSON.stringify ,第一次遇到,
MuxueTong (作者)
这是神回复吧?uni-app的api之中有改文件名的吗?用api、组件、插件都行,有知道的说个话。比如 renamefile(oldname,newname)之类的函数、过程。不是在Windows中手工改名
有方法,但很費資源:
用 plus.downloader
url 為http://localhost:13131/storage/emulated/0/abc/eee.png
更改option-filename: 'file://storage/emulated//0/abc/ffff.png' //<<最後為你想改的名  
然後再把舊的檔案刪走
以上只是思路,還未來得及試,明天會試
- 
                                                
                                                
                                             - 
                                                
                                                回复 MonikaCeng: 對! 昨天最後才試得出來,那個回覆是比較早試了一下, 連copy也copy不到的情況下才回覆的 , 因為當時url 試不中 ,當時用了file://storage/emulated/..... 試了很久,都不行
2021-06-16 09:46
 
以下用來創建dir:
test() {  
    plus.io.resolveLocalFileSystemURL(  
    '/storage/emulated/0/',  
    function(entry) {  
         console.log(entry)  
         entry.getDirectory('/storage/emulated/0/YOUR_PATH',{create:true},function(dir){  //YOUR_PATH為你的資料夾  
         },function(){  
              alert( e.message );  
              })  
        })  
    },
以下用於del: #! 超傻的設計,會把自己本身都del (如:'storage/emulated/0/YOUR_PATH' , 'YOUR_PATH' 本身都會被del)
test() {  
    plus.io.resolveLocalFileSystemURL(  
    '/storage/emulated/0/YOUR_PATH',  //<<<<位置  
    function(entry) {  
         console.log(entry)  
         entry.removeRecursively()  
        })  
    },
rename功能明天再幫你試,好像有點難.
            
            
            
            
samshum22
你這個方法是可行的,但沒有可行的通道呀
就連uni.download和save也要另外自己寫方法才可以配合使用,不然不知道下載自己了什麼
2021-06-15 16:30