使用Forge BIM360 API上传RVT文件至BIM 360 DOCS后SVF转换失败问题求助
解决BIM360 API上传RVT文件后SVF转换失败的问题
从你给出的报错信息和代码来看,核心问题应该是上传过程中文件格式被错误封装,导致BIM360无法识别为有效Revit文件——虽然上传请求返回成功,但实际文件内容已经损坏。
报错分析
你收到的两个错误提示指向同一根源:
Revit-UnsupportedFileType:系统判定上传的文件不是有效Revit文件,或版本不在支持范围内TranslationWorker-RecoverableInternalFailure:文件提取器无法正常解析内容,间接说明文件本身存在损坏问题
而手动上传同一文件能正常使用,已经排除了文件本身和版本兼容的问题,问题肯定出在API上传的代码实现上。
代码问题定位
你的代码使用了request.AddFile(fileName, filePath)来添加文件,但这个方法会自动将请求格式设置为multipart/form-data,而Autodesk OSS的PUT对象接口要求请求体是原始二进制流(application/octet-stream)。这种格式不匹配会导致上传的文件被额外的multipart边界符包裹,最终文件损坏,BIM360自然无法识别。
解决方案
修改上传代码,直接将文件的原始二进制内容作为请求体发送,而不是用AddFile方法。下面是修正后的代码示例:
Uri baseUrl = new Uri("https://developer.api.autodesk.com/oss/v2/buckets/wip.dm.prod/objects/" + objectId); IRestClient client = new RestClient(baseUrl); IRestRequest request = new RestRequest(baseUrl, Method.PUT); request.AddHeader("content-type", "application/octet-stream"); request.AddHeader("Authorization", token); // 直接读取文件二进制内容作为请求体 byte[] fileBytes = File.ReadAllBytes(filePath); request.AddParameter("application/octet-stream", fileBytes, ParameterType.RequestBody); IRestResponse response = client.Execute(request);
额外验证步骤
- 检查文件完整性:上传完成后,调用OSS的GET接口下载文件,对比原文件的MD5哈希值,确认文件没有损坏。
- 确认版本兼容性:虽然手动上传正常,但可以确认下你的Revit文件版本是否在Forge支持列表内(Revit 2015及以上版本均支持)。
为什么手动上传没问题?
BIM360网页端的上传流程会自动处理文件的格式封装,确保文件以原始二进制形式上传到OSS,所以不会出现文件损坏的情况。
内容的提问来源于stack exchange,提问作者Amilcar Ferreira
相关产品推荐
相关产品推荐

