如何从自定义服务器/Amazon S3获取SVF文件加载至Autodesk Forge Viewer
从自定义服务器/Amazon S3加载SVF到Autodesk Forge Viewer
前提说明
你需要先将源模型(如Revit、DWG等)转换为SVF格式,转换后的文件包包含主SVF文件、材质/纹理/几何数据目录、元数据文件等,需保证文件结构完整。
一、从自定义服务器加载
步骤1:部署SVF文件并配置CORS
- 将完整的SVF文件包上传到自定义服务器,确保所有文件可通过HTTP/HTTPS直接访问。
- 服务器必须配置CORS规则,允许Viewer所在域名跨域请求,示例Nginx配置:
location /svf-storage { add_header Access-Control-Allow-Origin "https://your-viewer-domain.com"; add_header Access-Control-Allow-Methods "GET, HEAD"; add_header Access-Control-Allow-Headers "Content-Type"; } - 若服务器需要身份验证,需提前准备好可用于请求文件的令牌。
步骤2:初始化Viewer并加载SVF
- 引入Viewer官方资源:
<link rel="stylesheet" href="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/style.min.css" type="text/css"> <script src="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/viewer3D.min.js"></script> - 编写加载逻辑:
const viewerDiv = document.getElementById('forgeViewer'); const viewer = new Autodesk.Viewing.GuiViewer3D(viewerDiv); viewer.start(); // 自定义服务器上SVF文件的URL const svfUrl = 'https://your-server.com/svf-storage/model.svf'; const loadOptions = { modelNameOverride: '我的自定义模型', // 若服务器需要验证,添加令牌回调 getAccessToken: (callback) => { callback('your-server-auth-token', 3600); // 令牌有效期(秒) } }; Autodesk.Viewing.Document.load(svfUrl, (doc) => { const viewables = doc.getRoot().getDefaultGeometry(); viewer.loadDocumentNode(doc, viewables, loadOptions); }, (error) => { console.error('加载失败:', error); });
二、从Amazon S3加载
步骤1:上传SVF并配置存储桶
- 将完整SVF文件包上传到S3存储桶。
- 配置存储桶CORS规则(JSON格式):
{ "CORSRules": [ { "AllowedOrigins": ["https://your-viewer-domain.com"], "AllowedMethods": ["GET", "HEAD"], "AllowedHeaders": ["Content-Type"] } ] } - 生产环境建议使用预签名URL控制访问权限,测试阶段可临时设置文件为公开可读。
步骤2:生成SVF访问URL
- 公开可读模式:直接使用S3文件URL,格式为
https://your-bucket.s3.amazonaws.com/svf-path/model.svf。 - 预签名URL模式(Node.js示例):
const AWS = require('aws-sdk'); const s3 = new AWS.S3(); const params = { Bucket: 'your-bucket-name', Key: 'svf-path/model.svf', Expires: 3600 // URL有效期(秒) }; const svfUrl = s3.getSignedUrl('getObject', params);
步骤3:加载SVF到Viewer
- 初始化代码与自定义服务器场景一致,仅需替换
svfUrl为S3的公开URL或预签名URL:const svfUrl = 'https://your-bucket.s3.amazonaws.com/svf-path/model.svf'; Autodesk.Viewing.Document.load(svfUrl, (doc) => { const viewables = doc.getRoot().getDefaultGeometry(); viewer.loadDocumentNode(doc, viewables); }, (error) => { console.error('加载失败:', error); });
关键注意事项
- 必须保证SVF文件结构完整,缺失纹理、几何数据等关联文件会导致模型显示异常。
- 使用与SVF格式兼容的Viewer版本,建议采用官方最新稳定版。
- 生产环境禁止设置S3存储桶为公开可读,优先使用预签名URL或IAM角色做访问控制。
内容的提问来源于stack exchange,提问作者hashanant
相关产品推荐
相关产品推荐

