各位大神,难道uni-app连文件名修改的api都没有吗?小白无能没有找到,各位大神,帮帮忙。谢谢
- 发布:2021-04-16 12:46
- 更新:2021-06-17 14:12
- 阅读:4053
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