// 这段代码,我在Android手机真机调试可以下载并且打开文件,但是在pc(我的是windows系统)只能到文件下载成功那一步,微信开发者工具中如果
//没有云储存接口(wx.cloud.downloadFile)下载之后本地接口(wx.downloadFile)再下载一遍的话也只能到文件下载成功那一步。
//现在可以在微信开发者工具和Android下载并打开文件。如下我再逐步列一下我的主要问题:
// 1.wx.getFileSystemManager().saveFile接口中filePath后不能直接添加上边定义的常量和变量,包括正则表达式。(主要问题1)
// 2.将常变量放到data里后可以放在filePath中,但只有手机端和微信开发者工具可用,但大文件还是想在pc端下载整合。
// 3.如果不适用正则表达式或添加文件名,直接在wx.env.USER_DATA_PATH后加储存位置的字符串,三者都可用,但是文件打不开,后期操作难度大。
// 4.后期操作无后缀文件的话,手机端可以放在相册里添加后缀,PC端直接就无法下载,打开后也是一个pdf文件,无法下载也无法编辑。对用户的操作难度加大,很不方便。
// 5.总结问题4:PC端想尽一切办法都不能加后缀打开文件,为什么手机可以PC不可以呢?(主要问题2)
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)
}
})
你好,截图res.savedFilePath,这个路径是否可以正常打开doc文档呢?
wxml里一个按钮,js里一段代码。为了您更便捷查看,跟您说一下,复制代码放到云环境下,上传到云储存一个文件,然后将wx.cloud.downloudFile接口下的fileID改成文件云id名,就可以实现!
我重启开发者工具后,开发者工具也可以下载了,手机真机调试没问题也可以下载,只有PC真机调试到一半没反应。
这个问题太专业了,回答不了。。。