上传图片提示 uni-app errMsg uploadFile fail undefined
上传图片提示 uni-app errMsg uploadFile fail undefined
示例代码:
editPhotoAc() {
var that = this
uni.chooseImage({
count: 1,
success: (chooseImageRes) => {
uni.showLoading({})
const tempFilePaths = chooseImageRes.tempFilePaths;
uni.uploadFile({
url: this.$baseUrl + '/api/common/upload',
filePath: tempFilePaths[0],
name: 'file',
success: (uploadFileRes) => {
console.log(uploadFileRes)
let data = JSON.parse(uploadFileRes.data)
that.userInfo.avatar = data.data.fullurl
uni.hideLoading()
},
fail: (err) => {
uni.showModal({
content: JSON.stringify(err),
success: (res) => {
}
})
uni.hideLoading();
},
});
}
});
}
操作步骤:
- 使用uni.chooseImage上传图片,打好apk包后,在三星手机上传图片失败,会提示"errMsg": “uploadFile:fail undefined”,在其他类型手机上则可以正常使用
预期结果:
- 在三星手机上可以正常上传图片
实际结果:
- 在三星手机上无法正常上传图片
bug描述:
- 在三星手机使用apk包,安装的应用在上传图片会报错误"errMsg": “uploadFile:fail undefined”。但是在使用真机运行时,无论是标准基座还是自定义基座均没有问题。而且同一个apk包,在华为、小米等类型的手机上均没有问题,仅仅是三星手机有该问题
| 开发环境 | 版本号 | 项目创建方式 |
|-------------------|---------|--------------|
| PC开发环境操作系统 | Windows | |
| PC开发环境操作系统版本号 | Windows 10 | |
| 手机系统 | Android | |
| 手机系统版本号 | Android 14 | |
| 手机厂商 | 三星 | |
| 手机机型 | SM-A145R | |
| HBuilderX类型 | 正式 | |
| HBuilderX版本号 | 4.66 | |
| 页面类型 | vue | |
| vue版本 | vue2 | |
| 打包方式 | 云端 | |
| 项目创建方式 | HBuilderX| |
更多关于上传图片提示 uni-app errMsg uploadFile fail undefined的实战教程也可以访问 https://www.itying.com/category-93-b0.html
报错图片
更多关于上传图片提示 uni-app errMsg uploadFile fail undefined的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我也遇到了相同的问题,突然上传不行了,您这边解决了吗?是什么问题
提供复现工程,并对比测试相同的设置,使用 hellouniapp 里的示例工程是否正常
使用uview2封装的upload请求,在大多数机型上没问题,客户那边反馈在Samsung galaxy 14和Lenovo Tab M9-2023 - Tablet测出上传报上述错误;使用hellouniapp 在pages/api/image/image 里面增加uploadFile客户那边是正常的了,这是什么问题?安卓权限问题吗? uni.$u.http.upload(’/api/common/uploadFile’, { filePath: url, name: ‘file’, }).then((res) => { uni.hideLoading(); resolve(res) }) [ “<uses-permission android:name=“android.permission.CHANGE_NETWORK_STATE”/>”, “<uses-permission android:name=“android.permission.MOUNT_UNMOUNT_FILESYSTEMS”/>”, “<uses-permission android:name=“android.permission.VIBRATE”/>”, “<uses-permission android:name=“android.permission.ACCESS_WIFI_STATE”/>”, “<uses-feature android:name=“android.hardware.camera.autofocus”/>”, “<uses-permission android:name=“android.permission.ACCESS_NETWORK_STATE”/>”, “<uses-permission android:name=“android.permission.CAMERA”/>”, “<uses-permission android:name=“android.permission.READ_EXTERNAL_STORAGE”/>”, “<uses-permission android:name=“android.permission.WRITE_EXTERNAL_STORAGE”/>”, “<uses-permission android:name=“android.permission.INTERNET”/>”, “<uses-permission android:name=“android.permission.RECORD_AUDIO”/>”, “<uses-permission android:name=“android.permission.MODIFY_AUDIO_SETTINGS”/>”, “<uses-permission android:name=“android.permission.READ_PHONE_STATE”/>”, “<uses-permission android:name=“android.permission.CHANGE_WIFI_STATE”/>”, “<uses-permission android:name=“android.permission.WAKE_LOCK”/>”, “<uses-permission android:name=“android.permission.FLASHLIGHT”/>”, “<uses-permission android:name=“android.permission.ACCESS_COARSE_LOCATION”/>”, “<uses-feature android:name=“android.hardware.camera”/>”, “<uses-permission android:name=“android.permission.ACCESS_FINE_LOCATION”/>”, “<uses-permission android:name=“android.permission.WRITE_SETTINGS”/>” ]
我也遇到相同的情况,特别是google版本的用户
这是一个典型的Android平台兼容性问题。"uploadFile:fail undefined"错误通常与网络权限、SSL证书配置或特定厂商的系统限制有关。
针对三星手机的解决方案:
- 检查网络权限配置 在manifest.json中确保已正确声明网络权限:
"android": {
"permissions": [
"<uses-permission android:name=\"android.permission.INTERNET\"/>"
]
}
-
验证SSL证书兼容性 三星设备对SSL证书验证较为严格,检查服务器证书是否被设备信任。可临时测试HTTP地址确认是否为SSL问题。
-
添加超时配置 在uploadFile中增加timeout参数:
uni.uploadFile({
url: this.$baseUrl + '/api/common/upload',
filePath: tempFilePaths[0],
name: 'file',
timeout: 10000, // 10秒超时
success: (uploadFileRes) => {
// ...
}
});
- 检查文件路径处理 三星设备对文件路径解析可能不同,建议添加路径验证:
const tempFilePaths = chooseImageRes.tempFilePaths;
if (!tempFilePaths || tempFilePaths.length === 0) {
uni.showToast({title: '文件选择失败', icon: 'none'});
return;
}

