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
有测试其他设备的安卓真机吗,模拟器是否可以复现,如果我想复现可以如何操作
更多关于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-app
中uni.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版本有关,上述代码和配置调整后,建议在出现问题的具体设备上进行充分的测试,以验证解决方案的有效性。如果问题依旧存在,可能需要进一步分析设备日志或联系设备制造商获取支持。