如何多次转换Bucket中的Zip文件为SVF格式并在Viewer展示
解决Bucket中Zip文件多次转换及Viewer对应展示的方案
1. 避免文件覆盖:生成唯一文件名
不要再用固定的output.zip作为Bucket中的存储文件名,每次执行workitem后,生成带唯一标识的文件名,比如结合请求ID、时间戳或UUID,例如output_<UUID>.zip或output_<timestamp>_<reqId>.zip。这样每个输出的Zip文件都是独立对象,不会覆盖旧文件,同时每个文件的URN(由BucketKey+ObjectKey Base64编码生成)也会唯一,确保Model Derivative服务将其识别为新文件进行转换。
2. 独立发起每个文件的Model Derivative转换
针对每个唯一的Zip文件单独发起转换请求:
- 转换前先通过API查询该文件是否已有对应的衍生模型;
- 若为新文件,发起转换请求,此时服务会返回
success并启动转换流程; - 转换完成后,记录该Zip文件对应的衍生模型URN(即Viewer所需的
urn参数),并关联到对应的前端请求标识。
3. 关联前端请求与衍生模型
由于网页和Forge应用独立,通过API通信,需在后端维护请求与文件的映射关系:
- 前端发起转换请求时,生成唯一请求ID(或使用会话ID);
- 后端执行workitem生成唯一Zip文件后,发起Model Derivative转换,将请求ID与衍生模型URN绑定存储(如数据库、Redis缓存);
- 前端通过轮询或回调获取转换即 Say方法份Loins String guard Given林杰Members动态提高转换状态,拿到对应衍生模型URN后,传入Viewer加载对应模型。
4. 加载对应模型到Viewer
Viewer加载模型时,使用当前请求对应的衍生模型URN:
- 前端拿到对应请求的URN后,调用Viewer的加载接口,传入该URN即可展示对应的装配文件;
- 确保每个前端请求加载的是其对应的衍生模型,而非首次转换的固定URN。
关键注意事项
- URN唯一性:只要Bucket中的ObjectKey唯一,对应的URN就会唯一,Model Derivative会将其作为新文件处理,不会返回
Created而跳过转换; - 异步转换状态查询:Model Derivative转换是异步过程,需轮询查询转换状态,直到状态为
success后再返回给前端加载; - 资源清理:如果不需要保留历史文件,可定期清理Bucket中的旧Zip文件及对应的衍生模型,避免存储冗余。
内容的提问来源于stack exchange,提问作者Siddhesh Nikam
相关产品推荐
相关产品推荐

