微信小程序之文件系统初探

微信小程序之文件系统初探

1、文件下载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 //下载文件
go_download: function() {
var content = this;
var baseUrl = "http://rwh.blob.core.chinacloudapi.cn";
var fileName = "1-e2b214af930149ee80c8142d067148a7.exam";
var url = baseUrl + "/data/ExamBuilder2.0/20190320" + "/" + fileName;

console.log("dowload url:" + url);

//用户缓存目录
var userLocalPath = wx.env.USER_DATA_PATH;
var localPath = "wxfile://";
var path = userLocalPath + "/" + fileName
var localPath = localPath + "/" + fileName
var authorization = "Basic ZThlYWJmNWMwN2I0NGI0YmEzOGJmZWMyMTJkM2U1ZDU=";
var apptoken = "Authorization"

const downloadTask = wx.downloadFile({

// 待下载的云资源
url: url,

//下载成功后的回调函数
success(res) {
console.log("dowload res.errMsg:" + res.errMsg);
console.log("dowload res.statusCode:" + res.statusCode);
console.log("dowload res.tempFilePath:" + res.tempFilePath);

if (res.statusCode === 200) {
wx.showToast({
title: '下载成功!'
})
}
},

//失败回调函数
fai: function(res) {
console.log("downloadFile fai:" + res.errMsg)
},

//完成回调函数
complete: function() {
console.log("downloadFile complete")
content.getReaddir(targPath)
}
})

downloadTask.onProgressUpdate((res) => {
console.log('下载进度', res.progress)
console.log('已经下载的数据长度', res.totalBytesWritten)
console.log('预期需要下载的数据总长度', res.totalBytesExpectedToWrite)
})

// downloadTask.abort() // 取消下载任务

}

2、持久化文件到本地

1
2
3
4
5
6
7
8
9
10
11
 //下载成功的文件目前存在temp文件夹下,它属于临时文件
//如果想要将其持久化,需要使用wx.saveFile()将其保存至store文件夹下,
//在使用这个函数时,temp文件夹下的临时文件会被删除。
wx.saveFile({
tempFilePath: res.tempFilePath,
success: function(res) {
console.log(res);
var savedFilePath = res.savedFilePath;
console.log('文件已下载到' + savedFilePath);
}
})

3、解压压缩文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//解压文件
unzipFile: function(path, targPath) {
var content = this;
console.log("unzip path:" + path)
console.log("unzip targPath:" + targPath)
wx.getFileSystemManager().unzip({
//文件路径
zipFilePath: path,

//目标文件夹
targetPath: targPath,

//成功回调函数
success: function(res) {
console.log(res.errMsg)
},

//失败回调函数
fai: function(res) {
console.log("unzip fai:" + res.errMsg)
},

//完成回调函数
complete: function() {
console.log("unzip complete")
content.getReaddir(targPath)
}
});
}

3、读取文件到内存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//读取文件
readFile: function(path) {
console.log("readFile start path:" + path)
var userLocalPath = wx.env.USER_DATA_PATH;
wx.getFileSystemManager().readFile({
//文件路径
filePath: path,

//成功回调函数
success: function(res) {
console.log("unzip success res:" + res.errMsg)
console.log(res)
},

//失败回调函数
fai: function(res) {
console.log("unzip fai:" + res.errMsg)
},

//完成回调函数
complete: function() {
console.log("unzip complete")
}
});
}

4、查看目标文件夹的文件列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 查看下载的文件列表
getReaddir: function(path) {
console.log("getReaddir start")
wx.getFileSystemManager().readdir({
dirPath: path,

//成功回调函数
success: function(res) {
console.log("getReaddir success res:" + res.errMsg)
console.log(res)
},

//失败回调函数
fai: function(res) {
console.log("getReaddir fai:" + res.errMsg)
},

//完成回调函数
complete: function() {
console.log("getReaddir complete")
}
})
}

5、查看已经缓存的文件列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 查看下载的文件列表
getUserSavedFileList: function() {
console.log("getUserSavedFileList start")
wx.getFileSystemManager().getSavedFileList({
//成功回调函数
success: function(res) {
console.log("getUserSavedFileList success res:" + res)
console.log(res)
},

//失败回调函数
fai: function(res) {
console.log("getUserSavedFileList fai:" + res.errMsg)
},

//完成回调函数
complete: function() {
console.log("getUserSavedFileList complete")
}
})
}