android 4.4 webview及微信x5内核不支持multiple属性,因chromium 30–33未实现该html5规范,且x5内核主动禁用;需检测环境并降级为wx.chooseimage等sdk方案。

是的,multiple 属性在 Android 4.4 系统 WebView(及部分基于 Chromium 30–33 内核的系统浏览器)中会被忽略,且无任何提示或降级行为——点击 <input type="file" multiple> 仅能选单张图片。
为什么 Android 4.4 的 WebView 不支持 multiple?
Android 4.4(KitKat)搭载的是 Chromium 30 内核,该版本尚未完整实现 HTML5 文件上传的 multiple 规范。系统 WebView 对该属性完全静默处理:既不报错,也不触发多选 UI,更不会在 event.target.files 中返回多个 File 对象。
- Chromium 30–33:仅支持单文件选择,
multiple被解析但被丢弃 - Chromium 34+(Android 5.0+):开始稳定支持
multiple - 注意:这不是 bug,而是当时标准实现未完成的阶段性限制
微信浏览器(X5 内核)也一样失效
微信内置浏览器在 Android 上长期使用腾讯 X5 内核(早期版本基于 Chromium 37,但对 H5 表单做了大量裁剪),其 <input type="file"> 组件默认禁用 multiple,即使写上也无效——这和 Android 4.4 原生 WebView 是两个独立原因,但现象一致。
- 真实表现:
<input type="file" multiple>点击后仍只弹出单图选择器 - 替代方案必须用 JS-SDK:调用
wx.chooseImage并传count: 9 - 不能依赖表单自动提交,需手动收集
localIds并上传
如何兼容 Android 4.4 及微信环境?
没有“修复”原生 multiple 的办法,只能绕过它。核心思路是:检测环境 → 主动降级 → 用 SDK 替代原生控件。
- 检测是否为低版本 WebView:
navigator.userAgent.indexOf('Android 4.4') > -1或检查WebViewFeature.isFeatureSupported(WebViewFeature.FILTER_WEB_CONTENT)(API 26+) - 微信环境直接走
wx.config+wx.chooseImage,不要渲染<input> - 若必须保留表单结构,可加
style="display:none"隐藏原生 input,用按钮触发 SDK - 服务端也要适配:
wx.chooseImage返回的是临时 localId,需先调wx.uploadImage上传到微信服务器,再中转
真正麻烦的不是写两套逻辑,而是很多团队会把 multiple 当作“写了就生效”的标准属性,在 Android 4.4 或微信里测不出问题——因为真机测试常被跳过,而模拟器/Chrome DevTools 无法复现 X5 或旧 WebView 的文件选择行为。











