微信小程序云开发:疑难问题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)
   }
 })

我不是专业程序工作者,在这里是把我的小程序设计经验分享给大家。 如果其中有用词不当的地方,请大家留言指正,我们共同学习。
更多设计、功能的学习经验,大家也可以去我的公众号查看! ————
在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐