HarmonyOS 7 · ArkWeb 混合应用开发手记 05H5 里一个input typefile看起来很普通。放进 ArkWeb后一旦产品要求上传图片、拍照、选 PDF事情就开始跨层Web发起选择原生弹系统选择器拿到 URI再交还给网页。这一篇不做花哨封装先把文件上传链路讲清楚。1. 先从 H5 写起inputidfiletypefileacceptimage/*多选inputtypefileacceptimage/*multipleH5 只负责声明需求不应该自己猜系统文件路径。【配图 01H5 上传按钮、系统选择器与 ArkWeb 回传链路】2. 原生侧接文件选择事件ArkWeb 对文件选择提供相应回调/自定义能力。HarmonyOS 7 不同 SDK版本的具体事件类型请以 DevEco类型提示为准。处理逻辑保持四步读取请求类型 → 拉起系统选择器 → 获取 URI→ 把结果交还 Web。3. 不要自己拼真实文件路径现代系统给你的往往是 URI。业务应该尽量围绕 URI和系统授权访问而不是把它强转成/storage/...再到处传。4. 图片和普通文件分开图片上传可能需要相册、拍照、压缩PDF/Word更适合文件选择器。不要一个按钮把所有能力都揉进去。enumUploadType{Image,Document}5. 权限要按需要申请不要进入 Web页面就把相机、相册相关权限全部申请一遍。用户点拍照上传时再进入对应流程体验和权限边界都更合理。6. 文件大小要两边限制H5 可以先提示if(file.size10*1024*1024){alert(文件不能超过 10MB)}原生/服务端仍然要再校验。前端限制从来不是安全边界。7. 上传前压缩别偷偷做图片压缩会影响清晰度。头像和报销票据完全不是一回事。应该按业务类型决定而不是所有图片固定压到300KB。8. 取消选择也是正常结果用户打开选择器然后取消不应该显示上传失败。selected → 返回 URI cancelled → 安静结束 error → 显示错误这三个状态要分开。9. 日志别打印敏感文件信息可以打印数量、类型、耗时但不要把用户完整本地路径、文件内容或隐私信息直接写进日志。10. 小结文件上传真正需要管理的是Web请求—系统选择—URI—回传这条边界。下一篇我们处理另一个更常见的边界登录以后Token和 Cookie 到底谁管怎么避免原生已登录、H5 还在登录页。