移动应用图片上传重试开发容易被简化成一个进度条,但用户真正关心的是照片是否安全保存、是否送到正确记录、失败后是否需要重新拍摄。网络恢复并不自动解决所有问题:图片可能已经到达存储,却还没有与表单关联;界面也可能显示完成,但应用退出后无法找回本地文件。
以虚构的设备交接应用为例,员工需要为一台租赁相机拍摄外观照片。现场连接较慢,上传过程中应用被系统关闭。此例用于定义流程,并非某个已完成项目的成绩。重新打开后,员工应能看到原来的任务和真实状态,避免遗漏照片或把同一图片附加多次。
将图片处理拆成可辨认的阶段
本地保存、准备文件、传输、服务端校验和关联业务记录是不同阶段。可以合并界面的表现,但不能混淆成功的含义。进度条到达末端时,如果还在校验文件,就应说明正在处理,而不是立即允许用户认为业务已经结束。错误提示需要指出卡在哪一步以及可采取的动作。
决定是否保留原图、如何压缩、是否处理方向与元数据,并与业务用途一致。用于展示的缩略图和用于核对细节的照片可能有不同要求。限制文件大小和类型时,要在服务端再次验证;客户端检查有助于体验,但不能作为唯一保护。不要为了缩小文件而无提示地破坏验收所需细节。
重试应指向同一上传任务
为待上传附件分配稳定标识,把本地文件引用、业务记录和任务状态持久化。网络中断后,重试应查询或恢复原任务,而不是每次点击都创建一个无法关联的新附件。临时上传地址过期时,可以在重新鉴权后获取新的地址,同时保留同一个业务意图。
是否支持分块与断点续传,需要根据存储服务、协议和客户端实现验证。若只能从头传输,应准确告知并评估大文件的体验。不能因为进度条恢复到某个百分比就宣称字节级续传已经实现。服务端接收到的内容和校验结果才是判断依据。
还要检查本地文件被系统清理或用户删除后的恢复方式。任务记录仍然存在,不代表文件字节仍可读取;应提示重新选择或拍摄,并保留其他已完成附件。恢复前核对文件与原任务的关联,避免把同名但不同内容的图片当成已经确认的照片。
取消、权限变化与孤立文件要有规则
用户取消表单时,正在上传的文件可能仍会到达服务端。定义它是否保留为草稿附件、何时清理,以及谁能访问。不要在取消界面后让迟到回调自动把文件关联到新表单。对已经被其他有效记录引用的附件,清理也必须检查真实引用关系。
切换账户或项目时,旧任务不能自动以新身份继续提交。每次恢复与最终关联都要检查当前权限。若原记录已经关闭或删除,提示需要处理,而不是把图片放到无关位置。上传日志可以记录任务编号和错误类型,但不应泄露完整签名地址或认证信息。
用实际中断检查恢复能力
验收测试应包含传输开始前断网、传输中断网、服务端收到文件后客户端未收到结果,以及最终关联失败。每种情况都关闭并重开应用,比较任务数量、文件内容和业务记录。再测试取消、地址过期及权限撤回,确认失败不会形成虚假的成功状态。
Brainbaby Labs可以帮助设计移动端媒体流程、后台任务和存储集成。咨询时提供典型文件大小、是否必须保留原图、预期网络环境及完成业务所需的确认条件。这样才能把“支持上传”转化为用户可以依赖、也能被实际验证的工作流程。