uni-app uni.chooseMedia 当mediaType: ['mix'] 在android的机型上可以同时选择图片或者视频,并且成功 但是在ios上 选择图片成功 选择视频失败
uni-app uni.chooseMedia 当mediaType: [‘mix’] 在android的机型上可以同时选择图片或者视频,并且成功 但是在ios上 选择图片成功 选择视频失败
示例代码:
uni.chooseMedia({
mediaType: ['mix'],
sourceType: ['album', 'camera'],
maxDuration: 30,
camera: 'back',
success(res) {
console.log(res)
},
fail(err) {
console.log(err)
},
})
android机型 同时选择图片视频返回:
{
"tempFiles": [
{
"tempFilePath": "wxfile://tmp_3bcb77e5ceb3aa8bf72748cd3c46bd894754dcd8920b7fad.jpg",
"size": 180005,
"fileType": "image"
},
{
"tempFilePath": "wxfile://tmp_5f2b18cc38c13560486d1b82b76d17ed2c6314c2074b8f40.jpg",
"size": 143061,
"fileType": "image"
},
{
"tempFilePath": "wxfile://tmp_3de54b4a36c887fe54da7d9313cfbb7d49287e81db538115.mp4",
"thumbTempFilePath": "wxfile://tmp_cbb3cd687781b65cfb6203d0a3cf87cabbb5495e633fb06adda5cd358a0a4613.jpeg",
"duration": 37,
"height": 796,
"width": 360,
"size": 1720754,
"fileType": "video"
},
{
"tempFilePath": "wxfile://tmp_6d4fec2435bf4e4d310b03f6cb716f908490ebcea8b7ea74.mp4",
"thumbTempFilePath": "wxfile://tmp_89929d0867feb2e386ad4dc75b97221bba4ca3d43395aef46c0638ecaf30f9c3.jpeg",
"duration": 36,
"height": 796,
"width": 360,
"size": 2636341,
"fileType": "video"
}
],
"type": "mix",
"errMsg": "chooseMedia:ok"
}
ios 机型 选择视频返回:
{
"tempFiles":[],
"errMsg":"chooseMedia:fail",
"type":"mix",
"failedCount":1
}
操作步骤:
- mediaType: [‘mix’], ios上,选择视频失败;
预期结果:
- mediaType: [‘mix’], ios上,选择视频成功;
实际结果:
- mediaType: [‘mix’], ios上,选择视频失败;
bug描述:
uni.chooseMedia,当mediaType: [‘mix’],在android的机型上可以同时选择图片或者视频,并且成功;但是在ios上,选择图片可以成功,选择视频失败;
更多关于uni-app uni.chooseMedia 当mediaType: ['mix'] 在android的机型上可以同时选择图片或者视频,并且成功 但是在ios上 选择图片成功 选择视频失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你可以测试一下使用微信原生的 wx. chooseMedia 测试一下看看结果是不是符合预期
更多关于uni-app uni.chooseMedia 当mediaType: ['mix'] 在android的机型上可以同时选择图片或者视频,并且成功 但是在ios上 选择图片成功 选择视频失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html
回复 1***@qq.com: 那这就是 wx 的问题了,这个 api 经过编译之后,调用的就是wx. chooseMedia ,帮你订了一下
这是一个iOS平台上的已知兼容性问题。在iOS系统中,当mediaType设置为['mix']时,系统原生的选择器不支持同时选择图片和视频,这导致了选择视频时失败。
问题分析:
- iOS的
UIImagePickerController在混合模式下存在限制 - 选择视频时系统无法正确处理混合媒体类型的请求
- 返回的
failedCount: 1表明有1个文件选择失败
解决方案: 建议采用以下替代方案:
- 分别选择图片和视频
// 分别调用图片和视频选择
uni.chooseImage({
success: (res) => {
// 处理图片
}
})
uni.chooseVideo({
success: (res) => {
// 处理视频
}
})
- 使用条件判断
// 根据业务需求分别处理
if (需要图片) {
uni.chooseImage({...})
}
if (需要视频) {
uni.chooseVideo({...})
}
- 平台判断
// 针对不同平台使用不同策略
if (uni.getSystemInfoSync().platform === 'ios') {
// iOS使用分别选择
} else {
// Android使用mix模式
uni.chooseMedia({
mediaType: ['mix'],
// ...其他参数
})
}

