You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Autodesk Forge RealityCapture API初始化失败及图片上传验证咨询

问题原因说明

1. ERR_HTTP_HEADERS_SENT报错

这个错误是因为你的接口响应逻辑重复调用了res.send:当接口返回response.data.Error时,你执行了一次res.send(response.data.Error.msg),但没有加return终止函数执行,后面的res.send('文件添加成功')逻辑还会继续运行,同一个请求不能返回两次响应,就触发了这个报错。

2. 至少需要3张图片报错

这个错误是因为你的文件上传逻辑完全不符合要求,Forge服务器根本没有接收到有效图片:

  • 你用querystring.stringify处理multipart/form-data格式的请求体是错误的,multipart格式不能用查询字符串序列化
  • 你只传递了本地文件的路径字符串,没有上传实际的图片二进制内容,Forge服务器无法读取你本地磁盘的文件,相当于没有上传任何有效图片
  • 手动指定content-type: multipart/form-data时没有携带boundary参数,请求格式本身就是无效的
  • Windows路径中的反斜杠需要转义,你写的C:\Dataset\会被JS当成转义字符处理,实际路径是错误的
修复步骤
  1. 先修改响应逻辑,避免重复发送响应:
if (response.data.Error) {
    return res.send(response.data.Error.msg); // 加return终止后续执行
}
  1. 替换上传逻辑,使用form-data包处理文件上传:
const FormData = require('form-data');
const fs = require('fs');

// 上传部分修改为
const form = new FormData();
form.append('photosceneid', photosceneId);
form.append('type', 'image');
// 逐个添加文件,注意路径反斜杠转义
form.append('file[0]', fs.createReadStream('C:\\Dataset\\FlowerPot\\20210527_082430.jpg'));
form.append('file[1]', fs.createReadStream('C:\\Dataset\\FlowerPot\\20210527_082459.jpg'));
// 剩余文件按相同规则添加
Axios({
    method: 'POST',
    url: 'https://developer.api.autodesk.com/photo-to-3d/v1/file',
    headers: {
        'Authorization': 'Bearer ' + access_token,
        ...form.getHeaders() // 自动生成带boundary的content-type,不要手动写
    },
    data: form
})
验证图片上传成功的方法
  • 查看上传接口返回的response.data.Files字段:正常上传成功后,这个字段会列出所有文件的上传结果,每个文件的status为success就说明单文件上传成功,统计成功的数量和你上传的数量一致即可
  • 调用ReCap的GET photoscene接口查询对应photoscene的详情,返回结果中的numfiles字段就是当前场景内有效文件的数量,数值大于等于3就满足处理要求
  • 如果上传接口返回结果中没有Error字段,HTTP状态码为200,也可以作为上传成功的参考依据

内容的提问来源于stack exchange,提问作者cyprien fol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 17:36:09