收藏
回答

canvas画的图片,生成的图片地址wxfile://temp无法上传服务器,导致服务器500?

我小程序用canvas画的图片,在pc测试的时候,图片生成的缓存路径是https开头的,可以正常上传。

结果到真机测试的时候,图片路径就变成 wxfile://temp_XXXXX.JPG 这种路径了。上传 服务器直接500


pc测试的结果:

真机测试的结果:

这里服务器已经500了。

下面是小程序的代码:


uploadCanvasImg() {
 
    wx.canvasToTempFilePath({
      canvasId: 'handWriting',
      fileType: 'jpg',
      quality: 1, //图片质量
      success(res) {
        console.log(res.tempFilePath, 'canvas生成图片地址');
 
        //上传
 
        var uid = wx.getStorageSync('uid');
        var u = app.globalData.url + "qianming.php";
        //上传
        wx.uploadFile({
          url: u, // 仅为示例,非真实的接口地址,比如:http://localhost/upload.php
          filePath: res.tempFilePath,
          name: 'file',
          header: {
            'Content-Type': 'application/json'
          },
          formData: {
            uid: uid,
            zhuan: 1,
            mode: mod,
            id: wxid
          },
          success(res) {
 
            var r = JSON.parse(res.data);
            console.log(r);
            if (r.status == '1') {
              wx.showToast({
                title: '签名保存成功',
                icon: 'success',
                duration: 2000
              })
 
              setTimeout(function() {
                if (mod == 'qm') {
                  wx.reLaunch({
                    url: '/pages/index/index'
                  })
                } else {
                  wx.reLaunch({
                    url: '/pages/wxxm/wxxm?d=[]&id=' + wxid
                  })
                }
 
              }, 2000)
            } else {
              wx.showModal({
                title: '提示',
                content: res.data.msg,
                showCancel: false
              });
            }
          },
          fail(res) {
            console.log(res);
            wx.showModal({
              title: '提示',
              content: '失败,请重试',
              showCancel: false
            });
          }
        })
      }
    })
  },
 
  onChange(e) { //TabBar选项卡切换
    console.log('onChange', e)
    if (e.detail.key == '1') {
      wx.reLaunch({
        url: '/pages/index/canvas1?mode=' + mod + '&id=' + wxid
      })
    }
  }
回答关注问题邀请回答
收藏

1 个回答

  • Mr.Zhao
    Mr.Zhao
    2021-09-04

    手机上都是wxfile, 难倒说不支持在手机上上传?chooseImage也是返回的wxfile。你uploadFile为啥要自定义header呢?用默认的

    2021-09-04
    有用
    回复 7
    • Again
      Again
      2021-09-04
      我把header删了试试
      2021-09-04
      回复
    • Again
      Again
      2021-09-04
      还是不行,我用的默认的,一样 直接服务器500 ,是我服务器需要对wxfile进行特殊配置吗?
      2021-09-04
      回复
    • Mr.Zhao
      Mr.Zhao
      2021-09-04回复Again
      传过去的不是wxfile,微信这边做转换了
      2021-09-04
      回复
    • Again
      Again
      2021-09-04回复Mr.Zhao
      晕死,服务器这边就是拿不到。服务器只要接受这个请求,就直接500了。得重启Nginx
      2021-09-04
      回复
    • Again
      Again
      2021-09-04
      2021-09-04
      回复
    查看更多(2)
登录 后发表内容