Autodesk Forge:转换失败 - 文件到存储桶数据:fileContent

Posted

技术标签:

【中文标题】Autodesk Forge:转换失败 - 文件到存储桶数据:fileContent【英文标题】:Autodesk Forge: Translation Failed - File to bucket data: fileContent 【发布时间】:2020-03-31 13:38:12 【问题描述】:

我一直在关注this viewer walkthrough tutorial (node.js),用于在 Forge 查看器中上传和显示文件。

我一直在使用 Angular 重新创建示例,除了用户上传文件之外,该文件从我的资产文件夹硬编码到应用程序中以进行测试。

当我尝试将 revit 文件转换为 svf 时出现问题。

我知道 revit 文件没有问题,因为我使用 models.autodesk.io 检查是否一切正常。

我可以成功创建一个存储桶并发布一个工作,但是当调用translation status 检查翻译是否完成时,我收到了这个:


    "type": "manifest",
    "hasThumbnail": "false",
    "status": "failed",
    "progress": "complete",
    "region": "US",
    "urn": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6OTA0ZmZmYmMtODI1Ni00OWY2LWI3YzYtNDI3MmM1ZDlmNDljL2RyYXBlLnJ2dA",
    "version": "1.0",
    "derivatives": [
        
            "name": "drape.rvt",
            "hasThumbnail": "false",
            "status": "failed",
            "progress": "complete",
            "messages": [
                
                    "type": "error",
                    "code": "Revit-UnsupportedFileType",
                    "message": "<message>The file is not a Revit file or is not a supported version.</message>"
                ,
                
                    "type": "error",
                    "message": "Possibly recoverable warning exit code from extractor: -536870935",
                    "code": "TranslationWorker-RecoverableInternalFailure"
                
            ],
            "outputType": "svf"
        
    ]

我很确定我用于翻译项目的代码是正确的,我认为问题来自uploading the file to my bucket。

PUT 请求的主体结构必须包含文件的内容。

这是我使用 XMLHttpRequestFileReader

加载和读取文件的代码
  loadFile(bucketKey, accessToken) 

    const reader: XMLHttpRequest = new XMLHttpRequest();
    reader.open('GET', './assets/drape.rvt', true);
    reader.responseType = 'blob';

    reader.onloadend = (request) => 

        const blob: Blob = reader.response;

        console.log(blob); //returns Blob size: 372736, type: "text/xml"

        // Create file from blob
        const modelFile: File = new File([blob], 'drape.rvt');

        this.readFile(bucketKey, accessToken, modelFile);

    ;

    reader.send();
  

  readFile(bucketKey, accessToken, modelFile) 

    const myReader: FileReader = new FileReader();

    myReader.readAsArrayBuffer(modelFile);
    myReader.onloadend = (e) => 

      const arrayBuffer: ArrayBuffer = myReader.result as ArrayBuffer;

      this.fileToBucket(bucketKey, accessToken, arrayBuffer);
    ;
  

还有put请求:

  fileToBucket(bucketKey, accessToken, fileContent) 

    const encodedBucketKey = encodeURIComponent(bucketKey);
    const encodedFileName = encodeURIComponent('drape.rvt');
    const uploadURI = `https://developer.api.autodesk.com/oss/v2/buckets/$encodedBucketKey/objects/$encodedFileName`;

    const options = 
      headers: new HttpHeaders(
        'Content-Type':  'application/octet-stream',
        Authorization: 'Bearer ' + accessToken
      )
    ;

    const body = 
      data: fileContent
    ;

    this.http.put(uploadURI, body, options)
    .subscribe(
      success => 

        // URL safe base64 encoding
        const urn = btoa(success.objectId);
        this.translateObject(accessToken, urn);
      , error => 
        console.log('fileToBucket');
        console.log(error);
      );
  

我假设文件内容是问题,这里是本教程使用 node.js 的等价物:PUT request read file。

【问题讨论】:

【参考方案1】:

您可以使用诸如https://oss-manager.autodesk.io/ 之类的实用程序网络应用程序来检查您之前上传的文件是否正确(通过下载或尝试通过应用程序的 UI 将其转换为 SVF)并使用此实用程序上传文件,然后尝试用您的应用程序翻译它。它还可用于删除存储桶中给定文件的所有衍生文件。 这有助于缩小问题的范围。

也有可能是文件第一次没有正确上传(在您仍在测试的某个时间点),因此当时翻译失败,现在它不会再次尝试翻译文件。您可以通过将 x-ads-force 添加到值为“true”的 POST Job 请求中来强制进行翻译 - 请参阅 @987654322 @

【讨论】:

我不知道这个应用程序存在,非常感谢!我现在正在 github 上查看它。不幸的是,这不是问题,我已经创建了新的存储桶并再次上传了文件,文件存在检查 GET buckets/:bucketKey/objects,但翻译失败。我现在正在查看的 repo 与我的类似,因此我应该能够找到问题所在。我会及时通知你

以上是关于Autodesk Forge:转换失败 - 文件到存储桶数据:fileContent的主要内容,如果未能解决你的问题,请参考以下文章

Autodesk forge 将 rvt 转换为 IFC 并移入文件夹

Autodesk Forge:添加图像文件指定的图像协议无效

Autodesk Forge Viewer 在本地服务器上存储文件?

Autodesk Forge - 将源文件转换为 .obj 时出错

使用 AutoDesk Forge 将 IDW 转换为 DWG

Autodesk Forge - 使用 curl 下载文件