3***@qq.com
3***@qq.com
  • 发布:2020-07-09 10:43
  • 更新:1 天前
  • 阅读:1685

【报Bug】uni.uploadFile 服务端返回HTTP响应码为500时,complete,suceess,fail回调函数中,都获取不到响应的信息

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: macOS Catalina10.15.5

HBuilderX类型: 正式

手机系统: Android

手机系统版本号: Android 7.1.1

手机厂商: vivo

手机机型: X9

页面类型: vue

nvue编译模式: fast

打包方式: 云端

项目创建方式: CLI

CLI版本号: 4.3.1

示例代码:
/**  
 * uni upload 基础封装  
 * @param filePath  
 * @param formData  
 * @param uploadUrl  
 * @param header  
 * @param name  
 * @returns {Promise<unknown>}  
 */  
const upload = (filePath, formData = {}, uploadUrl = '', header = {}, name = 'file') => {  
  return new Promise((resolve, reject) => {  
    uni.uploadFile({  
      url: uploadUrl,  
      filePath: filePath,  
      name: name,  
      header: header,  
      formData: formData,  
      success(res) {  
        console.log('success.res', res);  
        const {statusCode, data} = res;  
        if (statusCode === 200) {  
          const response = JSON.parse(data);  
          resolve(response);  
        }  
        reject(res);  
      },  
      fail(res) {  
        console.log('fail.res', res);  
        reject(res);  
      },  
      complete: (res) => {  
        console.log('complete.res', res);  
      }  
    })  
  });  
};

操作步骤:

服务端返回500响应码,并返回json数据

预期结果:

响应码为500时,res.data应该也能获取到服务端返回的数据

实际结果:

响应码为500时,res.data为请求的url

bug描述:

uni.uploadFile 服务端返回HTTP响应码为500时,安卓中无法获取响应数据,success,complete回调函数中打印数据 res, res.statusCode=500,res.data的值为请求的url,而非服务端返回的响应信息,H5中可以正常获取响应信息

2020-07-09 10:43 负责人:无 分享
已邀请:
c***@foxmail.com

c***@foxmail.com

大佬解决了吗?我也遇到这个问题了

5***@qq.com

5***@qq.com

修复了吗?我也遇到这个问题了

7***@qq.com

7***@qq.com

我也是这个问题 code是400 返回值res.data是空 但是小程序模拟器上返回值是完整的

1***@qq.com

1***@qq.com

没有大佬解决这个问题吗?

DCloud_Android_DQQ

DCloud_Android_DQQ

HTTP 500是服务器内部错误。本身就是没有数据的,你期望返回什么数据。

一般500是服务器软件返回的一个自带HTML,如下图

  • 1***@qq.com

    大佬,麻烦再关注一下我的问题

    2021-09-22 14:35

1***@qq.com

1***@qq.com

我这边app是使用uni.uploadFile进行上传,图片上传成功了,然后走下面的别的验证逻辑,会抛出异常,我在前端success里会接到下图这样的异常,但异常信息不是我主动抛出的那个,而是看到返回500,data里面变成url了,请问这个是什么问题?

  • DCloud_Android_DQQ

    听上去是你自己的验证程序 抛出了500

    2021-09-22 14:37

  • 1***@qq.com

    回复 DCloud_Android_DQQ: 是的,我抛出的也是500,但data信息不是我抛出的,这里的data好像是自动加上的,我抛出的具体的文字描述

    2021-09-22 14:52

  • 2***@qq.com

    请问解决了吗 我也是同样的问题 success中返回的这个异常

    2021-11-15 15:32

2***@qq.com

2***@qq.com - 码农小强

请问解决了吗 我也是同样的问题 success中返回的这个异常

9***@qq.com

9***@qq.com

之前一直以为是后台接口返回这种URL数据呢,还一直找后台修复呢,状态码非200情况下,比如422,也需要接收错误提示语来提示用户,哎

9***@qq.com

9***@qq.com

@DCloud_Android_DQQ

选择图片上传之后报422,正常会接收到后台返回的提示语,目前H5正常,App端接收到一个url链接

注意:需要在App端才能复现,当初是在浏览器调试好,打包App之后发现没有提示语,才知道有这么个问题,你下载了demo之后和我说一下,我把demo删掉

要回复问题请先登录注册