uni-app 小米手机 android11下uniCloud.chooseAndUploadFile报错
uni-app 小米手机 android11下uniCloud.chooseAndUploadFile报错
示例代码:
uniCloud.chooseAndUploadFile({
type: this.fileMediatype,
compressed: false,
sizeType: this.sizeType,
extension: _extname.length > 0 ? _extname : undefined,
count: this.limitLength - this.files.length,
onChooseFile: this.chooseFileCallback,
onUploadProgress: progressEvent => {
this.setProgress(progressEvent, progressEvent.index)
}
})
.then(result => {
this.setSuccessAndError(result.tempFiles)
})
.catch(err => {
console.log('选择失败', err)
})
操作步骤:
- uniCloud.chooseAndUploadFile提示失败
预期结果:
- uniCloud.chooseAndUploadFile能正确获取相册选中图
实际结果:
- uniCloud.chooseAndUploadFile提示"getImageInfo.fail"
bug描述:
使用的uni-file-picker插件,里面uniCloud.chooseAndUploadFile选择手机相册里面的图片,直接进入到catch中,提示 “getImageInfo.fail”
更多关于uni-app 小米手机 android11下uniCloud.chooseAndUploadFile报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
图片来源是那里 ?手机拍摄还是其他途径存储过来的?能知道图片后缀名吗? 这个报错是获取 图片信息的时候发生了错误
更多关于uni-app 小米手机 android11下uniCloud.chooseAndUploadFile报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
图片来源于手机相册,png格式
根据你提供的错误信息,这很可能是由于Android 11(API 30)引入的存储权限变更(Scoped Storage)导致的兼容性问题。在Android 11及以上版本中,应用对媒体文件的访问权限受到了更严格的限制。
解决方案:
-
检查并更新manifest.json配置 在
manifest.json的app-plus->distribute->android节点下添加以下配置:{ "permissions": [ "<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>", "<uses-permission android:name=\"android.permission.MANAGE_EXTERNAL_STORAGE\"/>" ] } -
添加Android权限声明 在项目根目录的
nativeplugins->AndroidManifest.xml中添加:<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> -
检查uni-app版本 确保你使用的是较新版本的uni-app(建议HBuilderX 3.2.0+),旧版本对Android 11的兼容性支持可能不完善。
-
临时解决方案 如果上述方法无效,可以尝试改用
uni.chooseImage+uniCloud.uploadFile的组合方式:uni.chooseImage({ count: this.limitLength - this.files.length, sizeType: this.sizeType, success: (res) => { const tempFilePaths = res.tempFilePaths; // 手动上传到uniCloud uniCloud.uploadFile({ filePath: tempFilePaths[0], cloudPath: 'your-cloud-path', onUploadProgress: (progressEvent) => { // 处理进度 } }) } })

