收藏
回答

安卓端用wx.downloadFile下载的图片、pdf等文件不开启开发者模式返回的是json?

安卓端用wx.downloadFile下载的图片、pdf等文件不开启开发者模式返回的是json数据,开启了开发者模式或者使用苹果手机就没有这个问题。

 wx.downloadFile({
          url: globalData.host + urlPath,
          header: {
            'request': 'wechat',
            'cookie': wx.getStorageSync('sessionId'),
            'content-type': 'application/x-www-form-urlencoded'//这个加不加都是一样的情况
          },
          success: function (res) {
            console.log('图片下载返回值',  res)
            if (res.statusCode === 200) {
              resolve({
                filePath: res.tempFilePath
              })
            } else {
              resolve({
                filePath: "downloadFail"
              })
            }
  
          },
          fail: function (res) {
            resolve({
              filePath: 'downloadFail'
            })
          }
        })

首次打开小程序不开启开发者模式获取数据后,开启开发者模式不清除缓存的情况下拿到的数据返回值


打开开发者模式后,重新进入小程序,重新走登录页面后就能获取到正确数据



----------------------------------------------------------------------------------------------------

问题出现在登录的时候,强制指定了某个位置的cookie,实际上安卓返回的cookie的位置发生了变化

    wx.setStorageSync('sessionId', res.cookies[1].split(';')[0])


因为项目是在其他项目的基础上更改的,登录和下载部分的代码都是一样的,就确认了代码是否一致,没有确定代码是否有问题,

就一直没发现cookie的问题。

还有就是用微信开发者工具的时候去掉cookie进行请求其实是有报错信息的,但是因为报错信息显示的乱码,就只注意到请求失败,

没去关注乱码具体是什么信息,第一次测试的时候也没有关注到去掉cookie返回了json文件,因为只关注了network面板,没看console面板。

后面复盘的时候发现返回的报错信息其实就是安卓端显示的json文件,

但是wx.downloadFile的返回没有具体的返回值,只能看到tempFilePath返回的文件名。

所以为啥vconsole没有network返回面板,如果有network返回面板,感觉问题定位起来会更加容易啊。


总结就是:如果是部分手机用wx.downloadFile下载返回的是json文件,应该考虑一下是不是报错了,可能返回的是报错信息,

不一定就是content-type的设置问题














最后一次编辑于  2023-07-24
回答关注问题邀请回答
收藏

1 个回答

  • 那一抹笑😃 穿透阳光
    那一抹笑😃 穿透阳光
    2023-07-21

    是不是没有配置下载域名的原因

    2023-07-21
    有用
    回复 3
    • Suoh
      Suoh
      2023-07-21
      request合法域名,uploadFile,downloadFile合法域名都配置了
      2023-07-21
      回复
    • 那一抹笑😃 穿透阳光
      那一抹笑😃 穿透阳光
      2023-07-21回复Suoh
      你把header全部删除试一下
      2023-07-21
      回复
    • Suoh
      Suoh
      2023-07-24回复那一抹笑😃 穿透阳光
      感谢大佬,确实就是header的问题
      2023-07-24
      回复
登录 后发表内容