Возможно восстанавливаемый код выхода предупреждения из экстрактора: -536870935 при переводе исходного файла Revit

Я следил за учебным пособием «Перевод файла Revit, создание информации о помещении и пространстве». Прямо сейчас я застрял на задаче 3, пытаясь перевести исходный файл Revit в SVF2.

Используя предоставленный файл Revit и следующий запрос POST https://developer.api.autodesk.com/modelderivative/v2/regions/eu/designdata/job:

// Headers
[
 'Authorization' => ...,
 'Content-Type'  => 'application/json',
 'x-ads-force'   => true,
]
// Body
[
  "input" => [
    "urn" => "<some urn>",
    "compressedUrn" => false
  ],
  "output" => [
    "destination" => [
      "region" => "EMEA"
    ],
    "formats" => [
      [
        "type" => "svf2",
        "views" => [
          "2d",
          "3d"
        ],
        "advanced" => [
          "generateMasterViews" => true
        ]
      ]
    ]
  ]
]

Я всегда получаю следующие сообщения:

Revit-UnsupportedFileType Файл не является файлом Revit или не является поддерживаемой версией. TranslationWorker-RecoverableInternalFailure Возможно восстанавливаемый код выхода предупреждения из экстрактора: -536870935

Я надеюсь, что кто-то может сказать, что не так с запросом POST. Я нашел похожий вопрос, но ответ, похоже, не относится к этой проблеме.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
56
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

На самом деле я сам попробовал этот же учебник, и он отлично работает с моей стороны. Пока вы выполняете каждый шаг, вы должны получить желаемый результат.

Если вы столкнулись с ошибкой в ​​третьей задаче, это означает, что вы могли что-то сделать неправильно в задаче 2.

Есть несколько шагов, которые вы должны проверить в Задаче 2, от которых зависит Задача 3. Пожалуйста, проверьте следующее:

  • Убедитесь, что ваш файл полностью загружен. Посмотрите раздел «Загрузить файл» в Задаче 2 руководства.
  • Вы должны сообщить OSS (служба хранилища объектов), что операция загрузки завершена. Посмотрите раздел «Завершить загрузку» в Задаче 2.

Эти действия должны гарантировать, что ваш файл полностью загружен и готов к переводу в SVF2.

ПРИМЕЧАНИЕ. При выполнении всех этих процессов убедитесь, что ваш токен доступа действителен, поскольку он остается действительным только в течение одного часа. Если срок действия токена истек, вы должны получить новый токен, повторно отправив запрос на аутентификацию в Forge.

Ответ принят как подходящий

Задавая вопрос, я использовал следующий код для загрузки файла в Autodesk с помощью http-клиента Laravel:

$response = Http::attach( 'file', $file->getContent(), $file->getClientOriginalName() )
->put( $signed_url );

Это загрузило файлы, и все работало для заархивированных моделей. Но, как объясняется в вопросе, простые исходные файлы, такие как .ipt или .rvt, не переводились.

Я предполагаю, что Laravel добавляет к этому запросу что-то, что каким-то образом повреждает файлы для Autodesk. Используя следующий запрос:

$response = Http::withHeaders( [
     'Content-Disposition' => 'attachment; filename='.$file->getClientOriginalName(),
      'Content-Length'      => $file->getSize(),
] )
    ->send(
        'PUT',
         $signed_url,
         [
              'body' => $file->getContent(),
          ]
     );

это работает. Я думаю, используя send, отправляет «сырой»/бинарный запрос.

В Symfony это будет выглядеть примерно так:

$response = HttpClient::create()->request(
   'PUT',
    $signed_url,
    [
       'body' => $file->getContent(),
        'headers' => [
              'Content-Disposition' => 'attachment; filename='.$file->getClientOriginalName(),
               'Content-Length' => $file->getSize()
          ]
      ]
);

Я не знаком с Лаварелем, поэтому не могу предложить большую помощь в этой части.

Однако вы можете попробовать использовать другой фреймворк, такой как Nodejs или даже .NET, чтобы посмотреть, сможете ли вы достичь желаемых результатов.

Вы можете следовать этому руководству, которое поможет вам приступить к созданию приложения на платформе Autodesk с использованием Nodejs или .NET framework: https://forge-tutorials.autodesk.io/

Вы сможете использовать Model Derivative API, а затем сможете попытаться преобразовать модель, как предполагалось.

Другие вопросы по теме