moyoe
moyoe
  • 发布:2025-10-30 18:37
  • 更新:2025-10-31 12:08
  • 阅读:150

【报Bug】鸿蒙系统调用uploadFile报错Request failed with status code 403

分类:uni-app

产品分类: uniapp/小程序/钉钉

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: windows 10 企业版 LTSC

HBuilderX类型: 正式

HBuilderX版本号: 4.76

第三方开发者工具版本号: 支付宝小程序开发者工具Version 3.9.56

基础库版本号: vue2

项目创建方式: HBuilderX

示例代码:
let a = uni.uploadFile({  
                        url: uploadUrl,  
                        filePath: fileUrl,  
                        name: 'file',  
                        header: {  
                            'Authorization': 'Basic bW9iaWGVfY3JtX3NlY3JldA==',  
                            'Blade-Auth': 'bearer ' + _this.accessToken  
                        },  
                        formData: {  
                            user: 'test'  
                        },  
                        fileType: 'image',  
                        success: (res) => {  
                            console.log('uploadFile res,',res);  
                            uni.showToast({  
                                title: "上传成功:" + JSON.stringify(res)  
                            })  
                            let result = JSON.parse(res.data);  
                            setTimeout(() => {  
                                resolve(result)  
                            }, 500)  
                        },  
                        error: (error) => {  
                            uni.showToast({  
                                title: "上传成功:" + JSON.stringify(error)  
                            })  
                            reject(error)  
                            console.log('upload error,',error)  
                        },  
                        complete: (comRes) => {  
                            console.log(comRes);  
                            uni.showToast({  
                                title: "上传完成:" + JSON.stringify(comRes)  
                            })  
                        }  
                    });

操作步骤:

在鸿蒙系统环境调用uni.uploadFile()

预期结果:

正常上传

实际结果:

请求失败

bug描述:

在安卓和IOS环境下可以正常调用uni.uploadFile(),运行在鸿蒙系统中会报错如图:

2025-10-30 18:37 负责人:无 分享
已邀请:
moyoe

moyoe (作者) - shenma

@DCloud_UNI_FengXY @DCloud_UNI_yuhe @DCloud_UNI_Anne @DCloud_uniCloud_JSON

DCloud_UNI_LXH

DCloud_UNI_LXH

403 是服务器报错,检查参数,和后端对一下请求

  • moyoe (作者)

    只有在鸿蒙系统下会报这个,在安卓iOS都是正常的,应该是调用uploadFile的时候有什么问题

    2025-10-31 11:12

  • DCloud_UNI_LXH

    回复 moyoe: 从后台看一下请求,是哪里不对?

    2025-10-31 11:21

  • moyoe (作者)

    回复 DCloud_UNI_LXH: 请求并没有走到服务端,是在前端调用的时候就出错了,在鸿蒙手机里也没有调试窗口,没法儿查看控制台报错

    2025-10-31 11:25

  • moyoe (作者)

    回复 DCloud_UNI_LXH: 看下我下面发的报文 ,在调用uploadFile接口时我传的header中的“Authorization”和“Blade-Auth”都是首字母大写的,在模拟器环境和安卓环境发送时,服务端收到的也是大写,但是鸿蒙环境发送时这两个都被转成 小写了。麻烦看下uploadFile在鸿蒙适配的时候是不是做了什么处理?

    2025-10-31 12:11

  • DCloud_UNI_LXH

    回复 moyoe: 好,我看下

    2025-10-31 15:25

moyoe

moyoe (作者) - shenma

小程序开发工具模拟器中发送的报文:
================ Request Start ================
===> POST: /api/resource/oss/endpoint/putfile Parameters: {"file":"apml663a8e10712c548c607c0ef52d1fe5c6.jpg"}
===Headers=== Authorization: Basic b--
===Headers=== Blade-Auth: bearer eydenTpmaDmZ9tKF013dbw
===Headers=== content-length: 15245
===Headers=== referer: https://5000000005085895.eco.dingtalkapps.com/index.html
===Headers=== Connection: close
===Headers=== host: 192.168.170.6:38105
===Headers=== content-type: multipart/form-data; boundary=--------------------------281868723852162749707588
===Headers=== user-agent: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 ChannelId(0) LyraVM Nebula AlipayDefined(nt:WIFI,ws:360|0|3.0) AliApp(DingTalk/7.0.0) DingTalkIDE/7.0.0 Ariver/1.0.6 AlipayIDE language/zh-CN
================ Request End ================
安卓环境下发送的报文:
================ Request Start ================
===> POST: /api/resource/oss/endpoint/putfile Parameters: {"file":"odvzmlzeejzhazipsgbi95zs0[B@1376296.jpg"}
===Headers=== Authorization: Basic b--
===Headers=== Blade-Auth: bearer eydenTpmaDmZ9tKF013dbw
===Headers=== connection: Keep-Alive
===Headers=== Host: 192.168.170.6:38105
===Headers=== Accept-Encoding: gzip
===Headers=== Content-Length: 90821
===Headers=== accept: /
===Headers=== user-agent: MiniFileUploaderAliApp(DingTalk/8.1.0) com.alibaba.android.rimet/50215315 Channel/10003993 language/zh-CN abi/64 xpn/vivo
===Headers=== Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryInjektToAweSSome
================ Request End ================
鸿蒙环境下发送的报文
================ Request Start ================
===> POST: /api/resource/oss/endpoint/putfile Parameters: {"file":"d8cffd5a677e0024849f95c65b461a3c.jpg"}
===Headers=== authorization: Basic b--
===Headers=== blade-auth: bearer eydenTpmaDmZ9tKF013dbw
===Headers=== User-Agent: libcurl-agent/1.0
===Headers=== Host: 192.168.170.6:38105
===Headers=== Accept-Encoding: deflate, gzip, br
===Headers=== Content-Length: 595724
===Headers=== accept: application/json, text/plain, /
===Headers=== Content-Type: multipart/form-data; boundary=------------------------1l0afHSfbaZbfG5yGY4IbM
================ Request End ================

  • DCloud_UNI_LXH

    看起来应该是鸿蒙平台上钉钉小程序的实现有问题,可以在钉钉的开发者社区反馈一下

    2025-10-31 15:35

  • moyoe (作者)

    回复 DCloud_UNI_LXH: 我调用过 钉钉的uploadFile的接口,确实也报这个错

    2025-10-31 15:37

  • DCloud_UNI_LXH

    使用 uni. uploadFile 调用的就是 my. uploadFile 文档

    2025-10-31 15:37

要回复问题请先登录注册