uni-app中uni.uploadFile在部分安卓手机(GalaxyS8、Pixel8等)上无法正常使用,报错信息为({"errMsg":"uploadFile: fail statusCode: null"})

uni-app中uni.uploadFile在部分安卓手机(GalaxyS8、Pixel8等)上无法正常使用,报错信息为({“errMsg”:“uploadFile: fail statusCode: null”})

开发环境 版本号 项目创建方式
Windows Windows 10 HBuilderX

操作步骤:

在Android 7(Galaxy S8)上运行下面代码或在https://m3w.cn/uniapp中的【接口】->【网络】->【上传文件】中选择图片上传。

uni.chooseImage({  
    success: (chooseImageRes) => {  
        const tempFilePaths = chooseImageRes.tempFilePaths;  
        uni.uploadFile({  
            url: "https://unidemo.dcloud.net.cn/upload",  
            filePath: tempFilePaths[0],  
            name: 'file',  
            formData: {  
                'user': 'test'  
            },  
            success: (uploadFileRes) => {  
                uni.showModal({content:"success"});  
            },  
            fail: (uploadFileRes) => {  
                uni.showModal({content:JSON.stringify(uploadFileRes)});  
            }  
        });  
    }  
});

预期结果:

提示上传成功

实际结果:

出现uploadFile: fail statusCode: null字样错误

bug描述:

Android 7(Galaxy S8)上使用uni.uploadFile上传图片,会报错信息为uploadFile: fail statusCode: null。服务端并未成功保存上传的图片。

使用官方文档中提供的代码,或直接安装使用官方“示例APP”均能成功复现。

补充:

  • 【Android 11】ZTE Libero 5G II(A103ZT)
  • 【Android 13】Sony Xperia Ace III(SO-53C)
  • 【Android 15】Google Pixel 8上也能复现此问题

更多关于uni-app中uni.uploadFile在部分安卓手机(GalaxyS8、Pixel8等)上无法正常使用,报错信息为({"errMsg":"uploadFile: fail statusCode: null"})的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

有测试其他设备的安卓真机吗,模拟器是否可以复现,如果我想复现可以如何操作

更多关于uni-app中uni.uploadFile在部分安卓手机(GalaxyS8、Pixel8等)上无法正常使用,报错信息为({"errMsg":"uploadFile: fail statusCode: null"})的实战教程也可以访问 https://www.itying.com/category-93-b0.html


@DCloud_UNI_OttoJi Android7.0.0的模拟器可以复现,请您用Android7.0.0的模拟器测试一下,谢谢。

针对你提到的uni-appuni.uploadFile在部分安卓手机(如Galaxy S8、Pixel 8等)上无法正常使用,并报错({"errMsg":"uploadFile: fail statusCode: null"})的问题,这通常与服务器响应、网络请求配置或Android系统特定的权限或兼容性问题有关。以下是一些可能帮助解决问题的代码示例和调整建议,但请注意,由于无法直接测试具体设备,这些代码需要根据你的实际情况进行调整和测试。

1. 检查服务器响应

首先,确保你的服务器端正确处理了文件上传请求,并且能够返回有效的HTTP状态码。可以在服务器端添加日志,查看请求是否到达服务器,以及服务器的响应内容。

2. 使用Promise处理异步请求

使用Promise来处理uni.uploadFile的异步请求,可以更好地捕获和处理错误。

uni.uploadFile({
    url: 'https://your-server-url/upload', // 替换为你的上传接口
    filePath: tempFilePaths[0],
    name: 'file',
    formData: {
        user: 'test'
    },
    success: (uploadFileRes) => {
        console.log('上传成功', uploadFileRes.data);
    },
    fail: (error) => {
        console.error('上传失败', error);
        if (error.errMsg === 'uploadFile:fail statusCode: null') {
            // 针对特定错误码的处理逻辑
            alert('上传失败,请检查网络连接或服务器状态');
        }
    }
});

3. 检查Android权限

确保你的应用已经请求并获得了必要的Android权限,特别是与网络和文件访问相关的权限。在manifest.json中配置必要的权限:

"mp-weixin": { // 或其他平台配置
    "app-plus": {
        "distribute": {
            "android": {
                "permissions": [
                    "android.permission.INTERNET",
                    "android.permission.WRITE_EXTERNAL_STORAGE",
                    "android.permission.READ_EXTERNAL_STORAGE"
                ]
            }
        }
    }
}

4. 网络请求配置

检查uni-app的网络请求配置,确保没有错误地配置了代理或其他可能影响请求的参数。

5. 调试和日志

在开发过程中,使用Android Studio或其他工具对出现问题的设备进行日志抓取,分析具体的错误原因。

由于问题可能与特定设备或Android版本有关,上述代码和配置调整后,建议在出现问题的具体设备上进行充分的测试,以验证解决方案的有效性。如果问题依旧存在,可能需要进一步分析设备日志或联系设备制造商获取支持。

回到顶部