开发者

GET/v3/lnp/project/{uniqueid}/document/{documentId}

下载号码携转项目的附件

下载本账户所属项目的文档字节,并验证与旧版存储格式的兼容性。

本页
  1. 账户与文档访问
  2. 确定要下载的文档
  3. 发送请求并保存响应
  4. 二进制响应与响应头
  5. 验证下载的文件
  6. 旧版存储兼容性
  7. 错误与操作影响

账户与文档访问

从您的 API 账户所属的号码携转项目中下载现有附件。请从允许的 IP 地址通过 HTTPS 使用已启用的 API 账户。项目不得已被删除。文档 ID 仅在该项目内查找,并非全局公开下载链接。

确定要下载的文档

读取项目详情响应,并使用其中的 uploads 列表中的一条记录。该记录包含数字形式的 id、原始文件名、存储的扩展名和相对地址 download_url。请使用项目的 uniqueid 和该上传记录的 ID,不要使用项目的数字行 ID,也不要使用号码记录的行 ID。

仅以您配置的可信 API 主机为基准解析返回的相对 URL。下载需要相同的账户身份验证;文档元数据不会授予未经身份验证的访问权限。

发送请求并保存响应

将 PROJECT_ID 和 DOCUMENT_ID 设置为您账户所属项目中的相应值。对项目 ID 进行 URL 编码。本示例分别保存字节内容和响应头,并使用固定的本地输出文件名,而不直接信任附件的文件名。

curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
  --dump-header document-headers.txt \
  --output porting-document.bin \
  "https://api.multitel.net/v3/lnp/project/$PROJECT_ID/document/$DOCUMENT_ID"

此请求使用 GET,不含请求体。它读取一个完整附件,没有此端点专用的分页机制、JSON 包装,也没有已记录的按字节范围下载约定。

二进制响应与响应头

成功时,响应体是经过旧版存储解码步骤后得到的附件存储字节,而非 base64,也不是 JSON 响应对象。该方法使用存储的文件名,去除双引号后发送附件类型的 Content-Disposition 响应头。无法保证该响应头采用符合标准的编码,也无法保证其值是安全的本地文件路径;请自行选择目标文件名。

按扩展名确定的响应 MIME 类型
存储的扩展名Content-Type
pdfapplication/pdf
pngimage/png
jpg, jpegimage/jpeg
docapplication/msword
其他值application/octet-stream

扩展名匹配不区分大小写。MIME 类型根据存储的扩展名选择,并非通过检查内容确定,也不保证文档有效。

验证下载的文件

  1. 同时检查 HTTP 状态和响应头。身份验证或查找错误可能返回 JSON 格式的 API 响应,而不是文件。不要将任何非空响应体或已保存的输出文件都视为成功下载的 PDF 文件。
  2. 如果响应体是 JSON 错误,请检查 status.code 和 status.msg。将错误输出与预期文档分开保存。
  3. 检查得到的文件是否非空,并且能否作为预期类型的文件打开。如果保留了原件,请先比较原件与副本的校验和,再使用副本。
  4. 如果结果为空、无效或与原件不同,请停止操作,并联系支持人员检查存储的附件。重复下载无法修复存储问题。

旧版存储兼容性

当前 API 上传路径以及已审查的门户和旧版上传写入组件,会将文档字节转义后存储。本下载操作会撤销该转义。针对实际处理程序的离线测试表明,对于这种存储格式,所有字节值和字面反斜杠都能保留。

这并不保证所有历史记录或从外部导入的记录都适用。处理程序始终对存储的二进制数据进行解码,不会检测记录是否在未按预期转义的情况下导入。当记录没有存储的二进制数据时,它也不会回退到文件路径。此类记录可能返回发生变化的字节或空字节内容。请验证结果,并让支持人员调查受影响的附件,不要修改客户文档,也不要认为元数据足以证明文件可用。

当前门户优先使用此 API 路由,并另有本地回退处理。通过门户成功下载,并不能证明每条旧版记录都可以直接通过此 API 下载。

错误与操作影响

如果项目不存在、已删除或不属于您的账户,将返回 API 代码 404,并附带找不到项目的消息。如果在本账户所属项目中找不到上传记录,将返回 API 代码 404,并附带找不到文档的消息。请同时阅读 API 错误响应体和 HTTP 状态。对于存在但缺少有效存储字节的记录,此处理程序没有专门且可靠的“未找到”响应。

已审查的端点只读取一个附件。它不会上传、修改或删除文档,不会提交号码携转请求,也不会从账户扣款。号码携转附件可能包含身份、账单或授权信息:请仅在获授权的账户工作流程中使用这些附件,不要将其放入公开日志、分析系统或文档截图。