Autodesk Forge场景链接下载文件无法解压,求OBJ文件获取方案
解决Forge模型下载解压失败的问题
首先得明确问题根源:Forge生成的模型下载链接必须携带身份验证令牌才能访问,你直接用匿名curl请求,服务器会拒绝访问,所以你下载到的不是真实的OBJ压缩包,而是服务器返回的错误响应文本,解压自然会失败。
下面给你修正后的代码,主要做了这几个关键调整:
- 在curl请求中添加
Authorization头,带上有效的Forge访问令牌(格式为Bearer <你的令牌>) - 修复
extractTo方法里的变量引用问题(单引号会导致变量无法解析,改用双引号) - 增加了文件有效性校验和调试日志,方便排查问题
// 先确保你已经获取到有效的Forge访问令牌(需要包含data:read权限) $forge_token = "你的Bearer令牌"; $photosceneDIR = "./path/to/your/storage"; // 替换成你的实际存储目录 $photosceneID = "你的场景ID"; $download_link = "Forge返回的模型下载链接"; // 修正后的curl命令,添加身份验证头 $curl_cmd = "curl -H 'Authorization: Bearer $forge_token' -o '$photosceneDIR/$photosceneID.obj.zip' '$download_link'"; // 执行curl并捕获输出,方便调试 $curl_output = shell_exec($curl_cmd . " 2>&1"); if (!empty($curl_output)) { echo "curl执行日志: " . $curl_output . "<br>"; } // 检查下载的文件是否有效 $zip_file = "$photosceneDIR/$photosceneID.obj.zip"; if (!file_exists($zip_file) || filesize($zip_file) < 100) { echo "ERROR: 下载的文件无效,请检查令牌和下载链接是否正确<br>"; exit; } // 解压压缩包 $zip = new ZipArchive; $res = $zip->open($zip_file); if ($res === TRUE) { $extract_path = "$photosceneDIR/$photosceneID.obj"; // 确保解压目录存在 if (!is_dir($extract_path)) { mkdir($extract_path, 0777, true); } $zip->extractTo($extract_path); $zip->close(); echo "解压成功!文件已保存至: $extract_path<br>"; } else { echo "ERROR: 无法解压文件,错误码: $res<br>"; }
额外提醒:
- 你的Forge访问令牌必须包含
data:read权限,否则依然会被服务器拒绝 - 令牌有有效期,要确保使用的是最新获取的有效令牌
- 如果路径或变量中包含特殊字符(比如空格),一定要用单引号包裹文件名和链接,避免curl命令解析出错
内容的提问来源于stack exchange,提问作者mcgregor94086
相关产品推荐
相关产品推荐

