新闻详情

新闻详情

首页 / 资讯中心 / 详情

统一拖拽图文只收到一半:UDMF 多 Entry 的类型协商、校验与失败回滚

发布时间:2026/9/27 6:55:17来源:尧图网络
统一拖拽图文只收到一半:UDMF 多 Entry 的类型协商、校验与失败回滚
统一拖拽图文只收到一半UDMF 多 Entry 的类型协商、校验与失败回滚从浏览器或富文本页面拖一段“文字 两张图片”到应用文字出现了第二张图却因格式不支持而失败用户再次拖入后文字又重复一份。官方统一拖拽指南明确指出图文混排应按 UDMF 多 Entry 处理。工程上最容易漏掉的是多条记录属于一次用户意图不能把每条记录当成互不相关的成功。验证边界本文依据华为开发者官网截至 2026-09-25 可访问的资料整理。文中的状态机、去重器和坐标计算已经在 Node.js 宿主环境执行断言当前本机仍是 API 24 SDK且没有连接 HDC 真机因此不把这些断言写成 API 26 编译或真机实测。涉及窗口、拖拽和跨设备能力的正式交付仍需在 API 26 SDK、模拟器或对应真机上补齐接口编译、交互录像与日志证据。先把失败链画出来只读取第一条UnifiedRecord会静默丢数据边读边写业务库则在中途失败时留下半成品。更隐蔽的问题是来源应用可能同时提供 HTML、纯文本和图片的多个表示目标端如果不做类型协商会把同一内容导入两遍。复现时要分别测试完整支持、部分不支持、同一内容多表示和中途取消。协议必须携带什么先扫描全部 Entry按目标能力选择每个逻辑内容的最佳表示再生成导入计划。计划阶段只校验类型、大小、数量和权限不写业务库所有必需项通过后才一次提交。可选项失败可以降级并记录必需项失败则整体回滚。用 dragSessionId 与内容摘要建立幂等键防止用户重试造成重复。type RecordKindtext|html|image; interface Entry { logicalId:string; kind:RecordKind; bytes:number; required:boolean } export function choose(entries:Entry[], supported:SetRecordKind): Entry[] { const rank:RecordKind[][html,image,text]; const groupsMap.groupBy(entries,ee.logicalId); return [...groups.values()].map(grouprank.map(kgroup.find(ee.kindksupported.has(k))).find(Boolean)) .filter((x):x is Entry!!x); } export function canCommit(all:Entry[], chosen:Entry[]):boolean { const idsnew Set(chosen.map(xx.logicalId)); return all.filter(xx.required).every(xids.has(x.logicalId)); }案例一HTML 与纯文本代表同一段说明目标端支持富文本时选择 HTML纯文本只作为降级表示不应再创建第二段。导入计划保存 logicalId、选中类型和原始来源用户撤销时按一次事务删除而不是逐条猜哪些内容来自本次拖拽。案例二两张图片中一张超过大小上限若图片都被标记为必需项计划阶段直接拒绝并列出超限文件不先插入文字若超限图片是可选附件可以提交文字和第一张图但必须给出明确的部分导入提示并把结果写入同一个 session 记录。与常见方案对比观察项容易写错更可靠的处理记录读取只取第一条 Record先扫描全部 Entry类型选择支持什么就全导入同一 logicalId 只选最佳表示写入时机边解析边写数据库计划通过后一次提交重试处理用户重拖就再插入sessionId 内容摘要幂等多 Entry 拖拽本质上是小型数据导入协议。计划与提交分离后应用可以提前显示将导入哪些内容、哪些会降级失败也不会污染业务数据。这套封装还能复用到剪贴板粘贴和文件批量导入。上线前协议检查扫描全部 Entry 并识别多表示。必需项与可选项策略明确。大小、数量和类型在提交前校验。一次拖拽只有一个事务与幂等键。部分成功必须有可见提示和可撤销记录。官方资料与适用范围统一拖拽多设备通用适配指南图文拖拽不是“能拿到几条就存几条”。先协商表示、再验证完整性、最后一次提交用户的一个动作才会得到一个可解释的结果。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

佛山网站建设服务器避坑指南:3个实战案例教你省下5万块 2026/9/27 6:54:55

佛山网站建设服务器避坑指南:3个实战案例教你省下5万块

佛山网站建设服务器避坑指南:3个实战案例教你省下5万块 找佛山网站建设服务,最怕的就是被忽悠买高价服务器。我见过太多老板,花两万块买了个配置过剩的机器,结果网站打开还是慢得让人想摔手机。别急着掏钱,先看这三个 实战案例…

阅读更多 →
3个实战案例教你用WordPress判断浏览器防挂马 2026/9/27 6:54:42

3个实战案例教你用WordPress判断浏览器防挂马

3个实战案例教你用WordPress判断浏览器防挂马 网站被黑挂马不知道怎么办?别慌,我见过太多独立站长因为没做好环境识别,导致恶意脚本在特定浏览器下才执行,Google Search Console…

阅读更多 →
python分支结构复习 2026/9/27 6:54:42

python分支结构复习

python分支结构复习 # 单路分支 if... if 条件:条件成立时要做的事情# 二路分支 if...else... if 条件:条件成立要做的事情 else:条件不成立时要做的事情# 多路分支 if...elif...else... if 条件1:语句1 elif 条件2:语句2 elif 条件n:语句n else:语句e

阅读更多 →
sem快速上手:6种安装方式从Homebrew到Docker,5分钟跑通语义版本控制 2026/9/27 6:54:36

sem快速上手:6种安装方式从Homebrew到Docker,5分钟跑通语义版本控制

sem快速上手:6种安装方式从Homebrew到Docker,5分钟跑通语义版本控制 【免费下载链接】sem Semantic version control > entity-level diffs, blame, and impact analysis on top of git. 28 languages via tree-sitter. Built for coding agents. 项…

阅读更多 →
AI专业大学生学习之路的开始 2026/9/27 6:54:36

AI专业大学生学习之路的开始

我的第一篇CSDN博客 人工智能专业编程学习之路 大家好!这是我入驻CSDN的第一篇原创博客,也是我正式记录自己编程学习、AI探索之路的开始。作为一名人工智能专业的在校大学生,从此我会在这里持续分享学习笔记、踩坑经验、项目实战心得&…

阅读更多 →
洛谷排序算法总结 2026/9/27 6:54:36

洛谷排序算法总结

1. 引言排序是算法竞赛中最基础也最重要的内容之一。洛谷(Luogu)作为国内最受欢迎的 OJ 平台,提供了大量优质的排序相关题目。本文总结了我在洛谷刷排序题过程中的经验与心得,涵盖常见排序算法的应用场景、题目套路与解题技巧&…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉