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

BIM 360/ACC文件浏览器查看及Model Derivative API调用问题求助

问题1:BIM 360/ACC文件翻译状态查询返回null

可能原因

  • URN重复编码:Data API返回的文件URN(通常在relationships.derivatives.data.id字段)已经是Base64编码格式,二次编码会导致无效的URN,接口无法识别。
  • 权限不足:AccessToken未包含data:read和modelderivative:read权限范围,导致接口拒绝访问。
  • 翻译未触发/未完成:虽然文档说明BIM 360/ACC文件会自动生成SVF/SVF2,但刚上传的文件可能需要几分钟完成翻译,或某些场景下需手动触发。
  • CURL请求异常:自定义的curlsent函数可能存在错误(如网络问题、URL拼接错误),导致请求失败返回null。

解决方案

  1. 检查URN编码:输出从Data API获取的原始URN,确认是否已为Base64格式(通常以dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6...开头)。如果已编码,移除base64_encode($urn)这一步。
  2. 验证AccessToken权限:生成token时确保包含data:read和modelderivative:read scope。
  3. 等待或手动触发翻译:若文件刚上传,等待5-10分钟后再查询;若始终无翻译记录,可调用Model Derivative的翻译接口手动触发(即使是BIM 360/ACC文件,也支持手动触发)。
  4. 调试CURL请求:在curlsent函数中添加错误日志,输出HTTP状态码和响应内容,排查请求失败原因。例如:
    function curlsent($url, $postData, $headers, $method='get') {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        if($method === 'post') {
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
        }
        $response = curl_exec($ch);
        if(curl_errno($ch)) {
            error_log('CURL Error: ' . curl_error($ch));
        }
        error_log('HTTP Status Code: ' . curl_getinfo($ch, CURLINFO_HTTP_CODE));
        curl_close($ch);
        return $response;
    }
    
问题2:OSS上传后调用翻译接口返回bool(false)

可能原因

  • URN编码不规范:Base64编码后的URN未做URL安全处理(未替换+为-、/为_,未移除末尾=),导致接口无法识别。
  • 请求体参数错误:
    • rootFilename设置为.iam,但上传的是DWG文件,参数与实际文件不匹配。
    • compressedUrn设为true,但上传的不是压缩包(如ZIP),参数无效。
  • CURL请求失败:curl_exec返回false通常是请求本身出错,如SSL证书问题、URL错误、超时等。
  • 区域或权限问题:AccessToken未包含bucket:read和modelderivative:create权限,或bucket区域与翻译API区域不匹配。

解决方案

  1. 规范URN编码:对原始URN进行Base64编码后,做URL安全处理:
    $encodedUrn = rtrim(strtr(base64_encode($urn), '+/', '-_'), '=');
    
  2. 修正请求体参数:移除无效参数,匹配实际文件信息:
    $body = array(
        "input" => array(
            "urn" => $encodedUrn
        ),
        "output" => array(
            "destination" => array(
                "region" => $region
            ),
            "formats" => array(
                array(
                    "type"=>"svf2",
                    "views"=>array("2d", "3d")
                )
            )
        )
    );
    
  3. 添加CURL错误调试:在curl_exec后添加错误日志,排查具体问题:
    $response = curl_exec($curl);
    if($response === false) {
        error_log('CURL Error: ' . curl_error($curl));
        error_log('HTTP Status Code: ' . curl_getinfo($curl, CURLINFO_HTTP_CODE));
    }
    curl_close($curl);
    
  4. 验证权限和区域:确保AccessToken包含bucket:read和modelderivative:create scope,且bucket区域(EMEA)与翻译API区域(eu)一致。

内容的提问来源于stack exchange,提问作者jian zhang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:04:58