恢复下载不等于在旧文件后面追加
Flux Art 配图结果下载中断时,自建程序可以保留部分文件用于诊断,但不能看到临时文件存在就继续往后写。地址可能已返回另一版本,服务器也可能忽略范围请求并发回完整内容。先确认本地已有字节属于什么,再判断本次响应提供哪一段。本文是接入方下载器的设计与待执行验收方法,没有做真实下载恢复测试,也不承诺某个结果地址支持续传或长期有效。
先把部分文件和下载记录绑定
保存临时文件时,关联业务任务、输出项、受控地址标识、实际已写入长度及上次响应的版本验证信息。完整签名地址只留在获授权的受控位置,不写入普通日志。临时文件没有记录或身份不明时,不从文件名猜所属图片。保留它并新建恢复记录,必要时从允许的来源重新完整取得文件。正在使用的批准素材不能成为续写目标,恢复失败也不能破坏当前可用版本。
把协议事实和本地处理策略分开
HTTP 的 Range 表示请求部分内容;If-Range 可用来要求版本仍相符时取所需片段,否则取得完整表示。弱 ETag 不能用于 If-Range。协议依据为 https://www.rfc-editor.org/rfc/rfc9110.html 的相关章节。下表是假设分支,不是真实测试;本地采取暂停或另存的策略由团队实现,未知响应不能补成预期成功。ETag 是验证标识,不默认等于图片的 SHA-256。
| 恢复时观察 | 本地处理方向 | 不能直接做什么 |
|---|---|---|
| 版本和单段区间都对应 | 在受控临时对象续接并复验 | 只看状态码就放行 |
| 返回200完整内容 | 另存完整文件重新验证 | 追加在旧部分文件后 |
| 206但区间不符 | 暂停并记录实际区间 | 忽略缺口或重复部分 |
| 收到416 | 复核长度和版本 | 直接标下载完成 |
| 身份或编码关系未知 | 保留部分文件,转完整获取或待核 | 混合不同表示的偏移 |
收到部分响应也要核对起点和表示
单段的206响应要检查 Content-Range 的起止区间、总长度信息和实际收到的字节;版本依据必须与已有片段相容。不能因为状态是206就无条件追加。假设本地已经完整保存零到九十九字节,下一段应从一百开始;若返回从零开始或出现缺口,就先停下核查。这只是索引算例,不是线上测试结果。当前实现不支持多段响应时,明确拒绝这种形式,不将其整体正文当成图片尾部。
完整响应另存,不接在部分文件后面
续传请求收到200时,应按完整响应处理,写入新的受控临时对象并重新验收,不接到旧片段后面。服务器不支持Range或版本条件不满足,都可能使原续接设想不再适用。旧片段保留为失败恢复证据,直到按内部保留规则处理;不要为了让进度显示更快而复用其中未经确认的字节。下载得到完整文件也只是完成传输检查,尚不代表业务关联和商品审核通过。
范围错误和内容编码需要单独判断
收到416时不要把它直接理解为本地已经全部下载完毕,应核对本地长度、远端长度与版本,再决定重新完整获取还是交给人工排查。还要明确客户端保存的是哪种表示的字节:若传输中存在内容编码,而库自动解码,原有偏移可能不能直接沿用。本流程建议先支持一种已验证的单段、无内容编码续传路径;条件不满足时退回完整下载,不默默混用不同字节坐标。
资源限制和请求权限仍然有效
恢复下载同样要有总大小、时间、跳转和次数限制,不能因为它叫续传就免去地址检查。文件地址失效时按已授权的结果获取方式处理,不猜签名参数、不绕过权限,也不把接口密钥发给图片主机。429按实际Retry-After安排,持续错误保留待处理。是否重新制作图片属于另一项业务决定,不能由一次下载失败自动触发新生成,更不能承诺恢复动作一定不产生其他服务费用。
用不会触碰生产素材的分支测试验收
在自有隔离测试环境准备明确版本的文件,验证正确片段、忽略Range返回完整内容、版本改变、区间不符、范围错误和中途再次断开等分支。正常路径应还原同一文件;异常路径应停止追加或另存重取,并保留原因。测试时不用客户签名地址或真实密钥,也不新建付费图像任务。记录所用客户端版本、响应样例、最终哈希和失败状态,不能只凭最后有一张能打开的图片就判恢复逻辑可靠。
最终交接要证明文件完整且身份正确
完成传输后,对实际文件执行受控解码与内容核对,关联原业务需求和输出项,再进入素材审核。文件哈希用于识别字节,不代替商品真实性或授权结论。Flux Art 接入说明可从 https://flux-art.net/zh/openapi/reference 查阅;续传记录和状态分支是接入方自建能力,不是新增平台端点。Flux Art 由 MORNING STAR INDUSTRY LIMITED 运营,是多模型 AI 视觉创作与生产平台,支持商业使用,输入素材权利另行确认。