使用文件API可以对用户手机设备中的文件进行一些操作。
为安全考虑,不同小程序间保存的文件是互相隔离的,
小程序外部获取的文件(如从手机中选择的文件)在小程序中也都是以临时文件存在的。
使用wx.chooseMessageFile接口可从客户端会话中选择文件,该接口从基础库2.5.0开始支持。接口支持Object参,参属性如下所示:
count(必填):最多可以选择的文件个数,可选值0-100
type:文件的类型,可选值为all、video、image和file
etension:根据文件拓展名过滤,仅type==file时有效。每项不能是空字符串。默认不过滤,最低版本2.6.0
success
fail
complete
type表示选择文件时关注的文件的类型:当type为all时表示从所有文件中选取;当type为video时选择视频文件,为image时选择图片文件,为file时可选除了图片和视频之外的所有文件。示例代码如下:
wx.chooseMessageFile({
count: 10,
type: 'image',
success(res) {
// res.tempFiles 是一个数组,其中保存的是被选中的文件的信息
const tempFile1 = res.tempFiles[0] // 获取第一个被选择的文件
console.log(tempFile1.path) // 临时文件的路径
console.log(tempFile1.size) // 临时文件的大小,单位为B
console.log(tempFile1.name) // 文件的名称
console.log(tempFile1.type) // 文件的类型,可能取值为video,image或file
console.log(tempFile1.times) // 选择的文件的会话发送时间(number类型的UNIX时间戳)
}
})
调用下载文件API、选择文件API可以拿到文件的临时路径。临时文件的保存周期不持久,使用wx.saveFile接口可以将临时文件保存下来,延长文件的保存舟曲,示例代码如下:
wx.chooseImage({
success(res) {
// tempFilePaths为一个数组,其中保存了选择的照片文件的临时路径
const tempFilePaths = res.tempFilePaths
// 将临时文件保存下来
wx.saveFile({
tempFilePath: tempFilePaths[0],
success(res) {
const savedFilePath = res.savedFilePath // 存储的文件路径
}
})
}
})
注:本地文件存储的大小限制为10MB。saveFile会把临时文件移动,因此调用成功后传入的tempFilePath将不可用。
使用wx.getSavedFileList接口可获取小程序下已保存的本地文件列表。使用代码如下:
wx.getSavedFileList({
success(res){
console.log(res.fileList)
}
})
success的fileList数组的每一项元素是一个Object值,其中包含小程序保存的所有文件信息,filePath表示文件的本地路径,size表示文件的大小,createTime表示文件保存的时间戳。