Junan_
Junan_
  • 发布:2024-11-04 09:57
  • 更新:2024-11-04 11:36
  • 阅读:29

【报Bug】客户端时间和服务器不一致导致uniCloud.uploadFile上传失败?

分类:uniCloud

产品分类: uniCloud/支付宝小程序云

示例代码:
/**  
 * 上传文件  
 * @param {String} filePath 微信选择文件的临时文件名  
 */  
function uploadImg(filePath) {  
  // 后缀,如.png  
  const suffix = filePath.substr(filePath.lastIndexOf('.')).toLowerCase()  
  const fileName = `user/${new Date().getTime()}${suffix}`  

  return new Promise((resolve, reject) => {  
    uniCloud.uploadFile({  
      filePath,  
      cloudPath: fileName,  
      onUploadProgress: progressEvent => {  
        const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total)  
        console.log(percentCompleted)  
      },  
      success: res => {  
        console.debug('@upload success', res)  

        resolve(res.fileID)  
      },  
      fail: e => {  
        console.error('error upload = ', e)  

        reject(e)  
      },  
      complete: () => {  

      }  
    })  
  })  
}

操作步骤:

1,将自己的设备时间调慢几分钟
2,在客户端调用uniCloud.uploadFile()方法

预期结果:

正常上传或返回可以理解的错误信息

实际结果:

提示 Error: request has expired
其他没有什么有价值的错误信息

bug描述:

客户端时间和服务器时间导致uniCloud.uploadFile上传失败

不确定是和服务器时间不一致还是和北京时间不一致

可以解释下为什么会这样和怎么解决吗?

2024-11-04 09:57 负责人:无 分享
已邀请:
DCloud_uniCloud_VK

DCloud_uniCloud_VK

这不是bug, 是支付宝在请求的时候会带上时间戳进行签名, 如果时间戳和支付宝服务器的时间戳相差太大, 就会拒绝访问, 因此手机上的时间必须调整跟北京时间的时间戳对齐

  • Junan_ (作者)

    好的,就是说国外用户就用不了了,而且客户端还要校验下时间,不然有些用户会提示莫名的错误

    2024-11-04 12:07

  • DCloud_uniCloud_VK

    回复 Junan_: 国外用户可以用的,世界各地的时间时区不一样,但是时间戳是一样的

    2024-11-04 12:56

要回复问题请先登录注册