微信小程序云开发:疑难问题1——下载云存储文件过程总结的疑似bug和解决方法(接口wx.:cloud.downloadFile,getFileSystemManage,env.USER_DATA_PATH)
微信小程序下载云存储文件过程总结的疑似bug和解决方法,在微信开放社区写了半天,感觉自己已经把自己的一些问题解决了。
比如wx.getFileSystemManager().saveFile中的tempFilePath如何添加文件名变量和正则表达式等。
手机端真机和开发者工具都可以实现,但是PC端真机是真的无能为力了。
PC端想尽一切办法都不能加后缀打开文件,为什么手机可以PC不可以呢?
这段代码,我在Android手机真机调试可以下载并且打开文件,但是在pc(我的是windows系统)只能到文件下载成功那一步,微信开发者工具中如果
没有云储存接口(wx.cloud.downloadFile)下载之后本地接口(wx.downloadFile)再下载一遍的话也只能到文件下载成功那一步。
//现在可以在微信开发者工具和Android下载并打开文件。如下我再逐步列一下我的主要问题:
1.wx.getFileSystemManager().saveFile接口中filePath后不能直接添加上边定义的常量和变量,包括正则表达式。
2.将常变量放到data里后可以放在filePath中,但只有手机端和微信开发者工具可用,但大文件还是想在pc端下载整合。
3.如果不用正则表达式或添加文件名,直接在wx.env.USER_DATA_PATH后加储存位置的字符串,手机、pc、开发者工具三者都可用,但是文件打不开,后期操作难度大。
4.后期操作无后缀文件的话,手机端可以放在相册里添加后缀,PC端直接就无法下载,openDocument打开后也是一个pdf文件,无法下载也无法编辑。对用户的操作难度加大,很不方便。
问题已解决:经过微信开放社区发布问题并提供代码片段后,社区技术人员给予了解答,原来是PC端小程序目前仅支持打开Word文档以及PDF格式文件 。而我想打开excel。微信开放社区咨询该问题页面
小程序代码片段demo链接:https://developers.weixin.qq.com/s/8wtr3DmL7Rmf,大家可以直接在开发者工具打开复制代码使用该功能。
wx.cloud.downloadFile({
fileID: fileID, // 文件 ID
// 下载云存储里的文件
success(res){
console.log("文件下载成功",res)
// return
// 因为一开始直接调用wx.getFileSystemManager().saveFile接口没反应,我只好又加了个下载本地缓存的文件
// 后来一点一点改动完成,经过测试后这个下载本地文件的接口可有可无,但是朋友们如果不能运行函数的话可以加上这个接口试试
wx.downloadFile({
url: res.tempFilePath,
success(res){
console.log(res)
// return
let zhanwei_id = that.data.array[0].zhanwei_id
// 因为直接添加几个变量运行函数没有反应,所以我把几个变量都整合到一起存到data中
that.setData({
filePath: '/' + bianliangming(这个是变量名) + "文件名"(这个是字符串) + /\.[^\.]+$/.exec(res.tempFilePath)[0](这个是正则表达式),
})
// 现在获取到的tempFilePath才可以用了,我就开始调用全局文件接口
wx.getFileSystemManager().saveFile({
tempFilePath: res.tempFilePath,
// 一开始直接把变量写在wx.env.USER_DATA_PATH后,没反应,然后就把东西放在data里,这个时候手机端可以下载并打开了,但是windows还是没反应
filePath: wx.env.USER_DATA_PATH + that.data.filePath,
// 下边这条语句是我一开始用的
// filePath: wx.env.USER_DATA_PATH + "/" + bianliangming(这个是变量名) + "文件名"(这个是字符串) + /\.[^\.]+$/.exec(res.tempFilePath)[0](这个是正则表达式)
success(res) {
console.log('save ->', res) // 上传文件结果
wx.showToast({
title: '文件已保存至:' + res.savedFilePath,
icon: 'none',
duration: 1500
})
// 打开该文件
wx.openDocument({
filePath: res.savedFilePath,
success: function (res) {
console.log('打开文档成功')
}
})
}
})
}
})
},
fail(err){
console.log("文件下载失败",err)
}
})
我不是专业程序工作者,在这里是把我的小程序设计经验分享给大家。 如果其中有用词不当的地方,请大家留言指正,我们共同学习。
更多设计、功能的学习经验,大家也可以去我的公众号查看! ————