文件上传我们要把选取文件这时我们需要借助小程序选取文件的api wx.chooseMessageFile(选取文件的api)或wx.chooseImage(选取图片的api)和文件上传以及下载的api,下面我们以上传文件为例:
1.首先选取要上传的文件把选取的文件大路径保存;
wx.chooseMessageFile({
success: (res) => {
this.fileName = res.tempFiles[0].name
this.filePath = res.tempFiles[0].path
}
});
2.然后调用文件上传的api wx.uploadFile
wx.uploadFile({
url: this.uploadUrl, //仅为示例,非真实的接口地址
filePath: filePath,
name: 'file',
formData: {
'file': 'file'
},
header: {
"Content-Type": "multipart/form-data",
"xxl_sso_sessionId": herads
},
success: (res) => {
var data = res.data
wx.showToast({
title: '文件上传成功',
icon: 'none'
});
}
})
wx.showToast({
title: '文件正在上传请耐心等待一会',
icon: 'loading',
duration: 1000
});
3.当上传完文件后用户下载文件到本地就需要用到文件下载的api即 wx.downloadFile
wx.downloadFile({
url: e,//文件上传成功后返回的地址或者是后端返回的下载地址
success: (res) => {
var tempFilePath = res.tempFilePath;
// 保存文件到本地(此时保存的是临时路径)
wx.saveFile({
tempFilePath,
success: (ress) => {
var savedFilePath = ress.savedFilePath;
// 打开文件
wx.openDocument({
filePath: savedFilePath,
success: function(res) {},
});
},
fail: function(err) {
console.log("文件打开失败")
}
});
},
fail: function(err) {
console.log("文件下载")
},
})
4.经过以上的操作就实现了文件的上传和下载到本地并打开的需求,需要值得注意的是微信保存文件的api目前还无法支持将文件保存在手机目录中以便用户随时找到打开,现在只能通过保存到临时路径用户想要打开文件时需要重新下载(文件保存在临时路径,微信小程序会定期进行清理,所以不会造成内存的滥用)。