使用文件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表示文件保存的时间戳。