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

Autodesk.Viewing.Document.load()中URN参数格式行为咨询

Autodesk.Viewing.Document.load()中URN参数格式行为咨询

嗨,这个问题我之前踩过类似的坑,咱们好好唠唠~

首先得明确Forge Viewer官方要求的URN格式:Autodesk.Viewing.Document.load()需要的参数是**urn:前缀 + URL安全的Base64编码字符串**,这里的Base64内容是你从Data Management API拿到的文件id(注意这个id本身是不带urn:前缀的)。

咱们来拆解你的操作:

  • 你把一个已经带urn:的原始URN(比如urn:xxx)用js-base64的encodeURI编码,解码后还是urn:xxx
  • 直接传这个解码后的字符串给load(),服务器返回400,这很正常——因为这个字符串不符合urn:<base64>的格式,服务器识别不了
  • 但你加了个urn:变成urn:urn:xxx反而能成功?这其实是Forge API的容错兼容行为,官方根本没把这个当成预期设计来支持。大概率是API在解析URN时,会自动忽略重复的urn:前缀,只取后面的有效内容来处理。

所以回到你的问题:这种urn:urn:...能生效的情况绝对不是预期行为,只是API的临时兼容逻辑而已,哪天官方修复了这个兼容逻辑,你的代码就会直接崩掉。

给你个正确的操作流程,按这个来就不会踩坑:

  1. 从Forge Data Management API获取目标文件的id字段(这个值本身不带urn:前缀)
  2. 用js-base64的Base64.encodeURI()方法对这个id做URL安全的Base64编码
  3. 拼接成urn:<编码后的字符串>的格式,再传给Autodesk.Viewing.Document.load()

举个例子:
假设文件id是dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6Zm9yZ2UtZGVtb3RvL2ZhY2Vib29rLmpwZw
编码后还是它本身(因为它已经是Base64了),最终拼接成urn:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6Zm9yZ2UtZGVtb3RvL2ZhY2Vib29rLmpwZw,这才是正确的URN格式。

备注:内容来源于stack exchange,提问作者FunkyPenguin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 12:04:36